C#を使用して文字列と一致するようにcomboBoxで選択したアイテムを設定するにはどうすればよいですか?

2009年01月16日に質問されました。  ·  閲覧回数 648.9k回  ·  ソース

May D picture
2009年01月16日

文字列 "test1"があり、comboBoxにはtest1test2 、およびtest3ます。 選択した項目を「test1」に設定するにはどうすればよいですか? つまり、文字列をコンボボックスアイテムの1つに一致させるにはどうすればよいですか?

私は以下の行を考えていましたが、これは機能しません。

comboBox1.SelectedText = "test1"; 

回答

Norbert B. picture
2009年01月16日
291

これでうまくいくはずです:

Combox1.SelectedIndex = Combox1.FindStringExact("test1")
Andrew Kennan picture
2009年01月17日
208

Textプロパティを試しましたか? わたしにはできる。

ComboBox1.Text = "test1";

SelectedTextプロパティは、コンボボックスのテキストボックス部分にある編集可能なテキストの選択された部分用です。

Spence picture
2009年01月16日
49

コンボボックスがデータバインドされていないと仮定すると、フォームの「items」コレクションでオブジェクトのインデックスを見つけてから、「selectedindex」プロパティを適切なインデックスに設定する必要があります。

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");

アイテムが見つからない場合、IndexOf関数がargumentexceptionをスローする可能性があることに注意してください。

Frederik Gheysels picture
2009年01月16日
39

ComboBoxの項目が文字列の場合は、次のことを試すことができます。

comboBox1.SelectedItem = "test1";
gabore picture
2010年07月09日
10

私にとってこれはうまくいきました:

foreach (ComboBoxItem cbi in someComboBox.Items)
{
    if (cbi.Content as String == "sometextIntheComboBox")
    {
        someComboBox.SelectedItem = cbi;
        break;
    }
}

MOD:コンボボックスに設定されたアイテムとして独自のオブジェクトがある場合は、ComboBoxItemを次のようなオブジェクトのいずれかに置き換えます。

foreach (Debitor d in debitorCombo.Items)
{
    if (d.Name == "Chuck Norris")
    {
        debitorCombo.SelectedItem = d;
        break;
    }
}
Brian Rudolph picture
2009年01月17日
9

SelectedTextは、ここに記載されているように、コンボボックス内の選択されたアイテムの文字列エディターで実際のテキストを取得または設定するためのもの

comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;

使用する:

comboBox1.SelectedItem = "test1";

または:

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");
Muhammad Sohail picture
2018年10月18日
9
ComboBox1.SelectedIndex= ComboBox1.FindString("Matching String");

Windowsフォームでこれを試してください。

dave picture
2014年06月12日
7

拡張メソッドを使用しました:

public static void SelectItemByValue(this ComboBox cbo, string value)
{
    for(int i=0; i < cbo.Items.Count; i++)
    {
        var prop = cbo.Items[i].GetType().GetProperty(cbo.ValueMember);
        if (prop!=null && prop.GetValue(cbo.Items[i], null).ToString() == value)
        {
             cbo.SelectedIndex = i;
             break;
        }
    } 
}

次に、メソッドを消費します。

ddl.SelectItemByValue(value);
Ben picture
2011年04月21日
5
comboBox1.SelectedItem.Text = "test1";
ihcarp picture
2009年01月16日
4

test1、test2、test3がcomboBox1コレクションに属しているとすると、次のステートメントが機能します。

comboBox1.SelectedIndex = 0;