WinForms コントロール実践ガイド

本記事では、Windows Formsアプリケーションで頻繁に利用される主要コントロールの具体的な実装手順を解説します。各コントロールのプロパティ設定やイベント処理を中心に、実践的なコード例を提示します。

1. MenuStrip:メニューバーの構築

MenuStripコントロールは、アプリケーションにメニューバーを追加するための標準コンポーネントです。デザイナ上で視覚的に編集できるほか、コードから動的に生成することも可能です。

主要プロパティ

プロパティ説明
Nameメニューオブジェクトの識別子
Itemsメニューに表示する項目のコレクション
Textメニュー項目に表示されるテキスト
ShowDropDown()指定した項目のドロップダウンを表示

デザイナ上でMenuStripを追加すると、画面上部に「ここに入力」と表示される領域が現れます。そこに直接テキストを入力することで、トップレベルのメニュー項目を作成できます。作成した項目をダブルクリックすると、Clickイベントハンドラが自動生成され、通常のボタンと同じようにイベント処理を記述できます。

動的なメニュー追加

以下のコード例では、コードビハインドでメニュー項目を動的に生成し、クリックイベントをバインドする方法を示します。

// 単一項目の追加
menuStrip1.Items.Add("新規メニュー");

// 複数項目の一括追加とイベントハンドラ設定
private void Form1_Load(object sender, EventArgs e)
{
    ToolStripMenuItem[] items = new ToolStripMenuItem[3];
    items[0] = new ToolStripMenuItem("ファイル");
    items[1] = new ToolStripMenuItem("編集");
    items[2] = new ToolStripMenuItem("ヘルプ");
    items[2].Click += new EventHandler(Help_Click);
    
    menuStrip1.Items.AddRange(items);
}

private void Help_Click(object sender, EventArgs e)
{
    MessageBox.Show("ヘルプが選択されました");
}

動的に生成した項目に対しては、ToolStripMenuItemクラスのインスタンスを作成し、必要なプロパティを設定した後、AddRangeメソッドで一括追加します。

2. TextBox:テキスト入力フィールド

TextBoxは、ユーザーからのテキスト入力を受け付ける基本的なコントロールです。以下のプロパティを設定することで、入力動作をカスタマイズできます。

// パスワード入力のマスキング
textBox1.PasswordChar = '*';        // 入力文字をアスタリスクで隠す
textBox2.UseSystemPasswordChar = true; // システム標準の黒丸で隠す

// 複数行入力の許可
textBox3.Multiline = true;          // 複数行テキストを有効化

// 読み取り専用モード
textBox4.ReadOnly = true;           // ユーザーによる編集を禁止

3. ListBox:項目リストの操作

ListBoxは、複数の項目を一覧表示し、ユーザーが選択できるコントロールです。ここでは、動的な項目追加と削除を実装します。

// フォームロード時に複数選択モードを設定
private void MainForm_Load(object sender, EventArgs e)
{
    listBox1.SelectionMode = SelectionMode.MultiExtended;
}

// 追加ボタンのクリックイベント
private void btnAdd_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(txtInput.Text))
    {
        listBox1.Items.Add(txtInput.Text);
        txtInput.Clear();
    }
}

// 削除ボタンのクリックイベント(選択項目をすべて削除)
private void btnDelete_Click(object sender, EventArgs e)
{
    if (listBox1.SelectedItems.Count > 0)
    {
        // SelectedItemsのコレクションは変更に弱いため、逆順ループで削除
        for (int i = listBox1.SelectedIndices.Count - 1; i >= 0; i--)
        {
            listBox1.Items.RemoveAt(listBox1.SelectedIndices[i]);
        }
    }
    else
    {
        MessageBox.Show("削除する項目を選択してください。");
    }
}

削除処理では、SelectedItemsコレクションが動的に変化するため、インデックスを逆順でループすることで安全に削除を行います。

4. RadioButton:単一選択の実装

RadioButtonは、複数の選択肢から1つだけを選ばせる場合に使用します。以下のコードは、選択状態に応じた処理を行います。

// 確定ボタンのクリックイベント
private void btnConfirm_Click(object sender, EventArgs e)
{
    if (radioOption1.Checked)
    {
        MessageBox.Show("オプション1が選択されています");
    }
    else if (radioOption2.Checked)
    {
        MessageBox.Show("オプション2が選択されています");
    }
    else
    {
        MessageBox.Show("いずれかのオプションを選択してください");
    }
}

RadioButtonは、同じ親コンテナ(PanelやGroupBoxなど)に配置することで、自動的に排他選択グループを形成します。

これらの基本的なコントロールの操作方法を理解することで、より複雑なWindows Formsアプリケーションの開発基盤を構築できます。

タグ: WinForms C# MenuStrip TextBox ListBox

8月8日 05:02 投稿