[C#] ComboBoxを入力不可にする方法

C#でComboBoxを入力不可にするには、ComboBoxのDropDownStyleプロパティをComboBoxStyle.DropDownListに設定します。

これにより、ユーザーはリストから項目を選択することはできますが、テキストを直接入力することはできなくなります。

具体的には、以下のように設定します:comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

これにより、ComboBoxはドロップダウンリストとして機能し、入力フィールドが無効化されます。

この記事でわかること
  • ComboBoxの入力不可設定方法
  • 項目の追加や削除の方法
  • 項目の並び替えの手法
  • 他のコントロールとの連携方法
  • データバインディングの活用法

目次から探す

ComboBoxを入力不可にする方法

DropDownStyleプロパティの設定

ComboBoxの入力を不可にするためには、DropDownStyleプロパティを設定する必要があります。

このプロパティは、ComboBoxの表示スタイルを制御します。

以下の2つのスタイルが主に使用されます。

スクロールできます
スタイル名説明
DropDownユーザーがテキストを入力できる
DropDownListユーザーが選択肢からのみ選べる

DropDownListを設定することで、ユーザーはリストから選択することしかできなくなり、テキストの入力ができなくなります。

ComboBoxStyle.DropDownListの効果

ComboBoxStyle.DropDownListを使用すると、ComboBoxはリストボックスのように動作します。

これにより、ユーザーは事前に定義された選択肢の中からのみ選択でき、自由にテキストを入力することはできません。

このスタイルは、選択肢が固定されている場合や、誤入力を防ぎたい場合に非常に便利です。

コード例:入力不可にする設定

以下は、ComboBoxを入力不可に設定するためのサンプルコードです。

using System.Windows.Forms;
public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        // ComboBoxの設定
        ComboBox comboBox = new ComboBox();
        comboBox.DropDownStyle = ComboBoxStyle.DropDownList; // 入力不可に設定
        comboBox.Items.Add("選択肢1"); // 項目の追加
        comboBox.Items.Add("選択肢2");
        comboBox.Items.Add("選択肢3");
        // フォームにComboBoxを追加
        this.Controls.Add(comboBox);
    }
}
どこをクリックしても選択肢が表示されるようになる

このコードを実行すると、ComboBoxはリストからの選択のみが可能となり、ユーザーは自由にテキストを入力することができなくなります。

ComboBoxのカスタマイズ

項目の追加と削除

ComboBoxに項目を追加したり削除したりすることは非常に簡単です。

Itemsプロパティを使用して、項目の管理を行います。

以下の方法で項目を追加または削除できます。

スクロールできます
操作メソッド/プロパティ説明
項目の追加comboBox.Items.Add("項目名")指定した項目をComboBoxに追加します。
項目の削除comboBox.Items.Remove("項目名")指定した項目をComboBoxから削除します。
全項目削除comboBox.Items.Clear()ComboBox内の全ての項目を削除します。

項目の並び替え

ComboBoxの項目を並び替えるには、Itemsプロパティを利用して、項目を一旦リストに格納し、並び替えた後に再度ComboBoxに設定します。

以下は、項目をアルファベット順に並び替える例です。

using System.Windows.Forms;
using System.Linq; // LINQを使用するために必要
public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        ComboBox comboBox = new ComboBox();
        comboBox.Items.AddRange(new object[] { "バナナ", "リンゴ", "オレンジ" });
        // 項目を並び替え
        var sortedItems = comboBox.Items.Cast<string>().OrderBy(item => item).ToArray();
        comboBox.Items.Clear(); // 既存の項目をクリア
        comboBox.Items.AddRange(sortedItems); // 並び替えた項目を追加
        this.Controls.Add(comboBox);
    }
}

このコードを実行すると、ComboBox内の項目がアルファベット順に並び替えられます。

項目の選択と取得

ComboBoxから選択された項目を取得するには、SelectedItemプロパティを使用します。

選択された項目を取得する方法は以下の通りです。

スクロールできます
操作メソッド/プロパティ説明
選択項目の取得comboBox.SelectedItem現在選択されている項目を取得します。
選択項目のインデックスcomboBox.SelectedIndex現在選択されている項目のインデックスを取得します。

以下は、選択された項目を取得して表示する例です。

using System.Windows.Forms;
public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        ComboBox comboBox = new ComboBox();
        comboBox.Items.AddRange(new object[] { "選択肢1", "選択肢2", "選択肢3" });
        comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged; // イベントハンドラの追加
        this.Controls.Add(comboBox);
    }
    private void ComboBox_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        ComboBox comboBox = sender as ComboBox;
        string selectedItem = comboBox.SelectedItem.ToString(); // 選択された項目を取得
        MessageBox.Show("選択された項目: " + selectedItem); // メッセージボックスで表示
    }
}

このコードを実行すると、ComboBoxで項目を選択するたびに、選択された項目がメッセージボックスで表示されます。

応用例

入力不可のComboBoxを使ったフォーム作成

入力不可のComboBoxを使用したフォームを作成することで、ユーザーが選択肢からのみ選べるようにし、誤入力を防ぐことができます。

以下は、基本的なフォームの例です。

using System.Windows.Forms;
public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        // 入力不可のComboBoxを作成
        ComboBox comboBox = new ComboBox();
        comboBox.DropDownStyle = ComboBoxStyle.DropDownList; // 入力不可に設定
        comboBox.Items.AddRange(new object[] { "オプション1", "オプション2", "オプション3" });
        // フォームにComboBoxを追加
        this.Controls.Add(comboBox);
    }
}

このコードを実行すると、ユーザーはリストからのみ選択できるComboBoxが表示されます。

入力不可のComboBoxと他のコントロールの連携

入力不可のComboBoxを他のコントロールと連携させることで、よりインタラクティブなフォームを作成できます。

例えば、ComboBoxの選択に応じてLabelのテキストを変更する例を示します。

using System.Windows.Forms;
public partial class MyForm : Form
{
    private Label label; // Labelを定義
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        // 入力不可のComboBoxを作成
        ComboBox comboBox = new ComboBox();
        comboBox.DropDownStyle = ComboBoxStyle.DropDownList; // 入力不可に設定
        comboBox.Items.AddRange(new object[] { "選択肢A", "選択肢B", "選択肢C" });
        comboBox.SelectedIndexChanged += ComboBox_SelectedIndexChanged; // イベントハンドラの追加
        // Labelを作成
        label = new Label();
        label.Location = new System.Drawing.Point(0, 30); // 位置を設定
        // フォームにComboBoxとLabelを追加
        this.Controls.Add(comboBox);
        this.Controls.Add(label);
    }
    private void ComboBox_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        ComboBox comboBox = sender as ComboBox;
        label.Text = "選択された項目: " + comboBox.SelectedItem.ToString(); // Labelに選択項目を表示
    }
}

このコードを実行すると、ComboBoxの選択に応じてLabelのテキストが更新されます。

入力不可のComboBoxを用いたデータバインディング

データバインディングを使用することで、ComboBoxの項目をデータソースに接続し、動的に項目を管理できます。

以下は、リストからデータをバインドする例です。

using System.Collections.Generic;
using System.Windows.Forms;
public partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent(); // フォームの初期化
        // データソースの作成
        List<string> items = new List<string> { "データ1", "データ2", "データ3" };
        // 入力不可のComboBoxを作成
        ComboBox comboBox = new ComboBox();
        comboBox.DropDownStyle = ComboBoxStyle.DropDownList; // 入力不可に設定
        comboBox.DataSource = items; // データソースを設定
        // フォームにComboBoxを追加
        this.Controls.Add(comboBox);
    }
}

このコードを実行すると、リストからデータを取得して表示するComboBoxが作成されます。

データソースを変更することで、ComboBoxの内容も動的に更新できます。

よくある質問

ComboBoxの入力不可設定を解除するには?

ComboBoxの入力不可設定を解除するには、DropDownStyleプロパティをComboBoxStyle.DropDownに変更します。

これにより、ユーザーはComboBoxに自由にテキストを入力できるようになります。

以下はその例です。

comboBox.DropDownStyle = ComboBoxStyle.DropDown; // 入力可能に設定

ComboBoxの選択項目をプログラムで変更するには?

ComboBoxの選択項目をプログラムで変更するには、SelectedItemまたはSelectedIndexプロパティを使用します。

これにより、特定の項目を選択状態にすることができます。

以下はその例です。

comboBox.SelectedItem = "選択肢2"; // 指定した項目を選択
// または
comboBox.SelectedIndex = 1; // インデックスで指定

ComboBoxのスタイルを変更する方法は?

ComboBoxのスタイルを変更するには、DropDownStyleプロパティを設定します。

ComboBoxStyle.DropDownComboBoxStyle.DropDownListなど、必要に応じてスタイルを選択します。

以下はその例です。

comboBox.DropDownStyle = ComboBoxStyle.DropDownList; // 入力不可に設定

これにより、ComboBoxの動作やユーザーインターフェースが変更されます。

まとめ

この記事では、C#のComboBoxを入力不可にする方法や、そのカスタマイズ方法について詳しく解説しました。

具体的には、ComboBoxのDropDownStyleプロパティを利用して入力を制限する方法や、項目の追加・削除、並び替え、選択項目の取得方法について触れました。

これらの知識を活用して、より使いやすいユーザーインターフェースを作成することが可能です。

ぜひ、実際のプロジェクトに応用して、ComboBoxの機能を最大限に引き出してみてください。

  • URLをコピーしました!
目次から探す