221

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

下の行を考えていましたが、これはうまくいきません。

comboBox1.SelectedText = "test1"; 
4

27 に答える 27

306

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

Combox1.SelectedIndex = Combox1.FindStringExact("test1")
于 2009-01-16T11:08:19.173 に答える
211

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

ComboBox1.Text = "test1";

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

于 2009-01-16T23:48:35.907 に答える
51

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

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

項目が見つからない場合、IndexOf 関数は引数の例外をスローする可能性があることに注意してください。

于 2009-01-16T10:57:52.860 に答える
42

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

comboBox1.SelectedItem = "test1";
于 2009-01-16T10:52:24.510 に答える
12

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

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;
    }
}
于 2010-07-09T09:07:07.997 に答える
9

SelectedText は、ここに記載されているように、コンボボックスで選択されたアイテムの文字列エディターで実際のテキストを取得または設定します。次のように設定すると、これは編集できなくなります。

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

使用する:

comboBox1.SelectedItem = "test1";

また:

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");
于 2009-01-16T22:59:25.553 に答える
5
comboBox1.SelectedItem.Text = "test1";
于 2011-04-21T10:56:56.297 に答える
4

データベースから埋められた een DataTable で ComboBox を埋めました。次に、DisplayMember と ValueMember を設定しました。そして、このコードを使用して、選択したアイテムを設定します。

foreach (DataRowView Row in ComboBox1.Items)
{
    if (Row["ColumnName"].ToString() == "Value") ComboBox1.SelectedItem = Row;
}
于 2011-05-05T11:17:40.017 に答える
4

このソリューションは、私が行ったいくつかの変更を加えたMSDNに基づいています。

  • 文字列の正確または一部を見つけて設定します。

    private int lastMatch = 0;
    private void textBoxSearch_TextChanged(object sender, EventArgs e)
    {
        // Set our intial index variable to -1.
        int x = 0;
        string match = textBoxSearch.Text;
        // If the search string is empty set to begining of textBox
        if (textBoxSearch.Text.Length != 0)
        {
            bool found = true;
            while (found)
            {
                if (comboBoxSelect.Items.Count == x)
                {
                    comboBoxSelect.SelectedIndex = lastMatch;
                    found = false;
                }
                else
                {
                    comboBoxSelect.SelectedIndex = x;
                    match = comboBoxSelect.SelectedValue.ToString();
                    if (match.Contains(textBoxSearch.Text))
                    {
                        lastMatch = x;
                        found = false;
                    }
                    x++;
                }
            }
        }
        else
            comboBoxSelect.SelectedIndex = 0;
    }
    

お役に立てば幸いです!

于 2011-08-01T15:38:27.233 に答える
4

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

comboBox1.SelectedIndex = 0; 
于 2009-01-16T10:59:11.143 に答える
1
  • コンボボックスで ListItems を列挙する
  • 等しいものリストインデックスセットコンボボックスを取得
  • listindex を見つかったものに設定します。

しかし、コードレビューアーとしてそのようなコードを見たら、すべてのメソッドアルゴリズムを再考することをお勧めします.

于 2009-01-16T10:53:47.813 に答える
1

ComboBox にそのプロパティがありません。SelectedItem または SelectedIndex があります。コンボ ボックスを埋めるために使用したオブジェクトがある場合は、SelectedItem を使用できます。

そうでない場合は、アイテムのコレクション (プロパティ アイテム) を取得し、必要な値が得られるまでそれを繰り返し、それを他のプロパティで使用できます。

それが役に立てば幸い。

于 2009-01-16T10:56:15.970 に答える
1
_cmbTemplates.SelectedText = "test1"

または多分

_cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1");
于 2009-01-16T11:01:37.470 に答える
1

ComboBox データバインドにKeyValuePairを使用し、 で項目を検索したかったので、これは私の場合に機能しました:

comboBox.SelectedItem = comboBox.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == "value to match");
于 2015-12-07T07:46:40.683 に答える
0

値のインデックスを返す関数を作成しました

        public static int SelectByValue(ComboBox comboBox, string value)
        {
            int i = 0;
            for (i = 0; i <= comboBox.Items.Count - 1; i++)
            {
                DataRowView cb;
                cb = (DataRowView)comboBox.Items[i];
                if (cb.Row.ItemArray[0].ToString() == value)// Change the 0 index if your want to Select by Text as 1 Index
                {
                    return i;
                }
            }
            return -1;
        }
于 2016-12-28T18:41:50.543 に答える
0
combo.Items.FindByValue("1").Selected = true;
于 2011-11-01T22:41:02.590 に答える
0
  ListItem li = DropDownList.Items.FindByValue("13001");
  DropDownList.SelectedIndex = ddlCostCenter.Items.IndexOf(li);

あなたのケースでは、使用できます

DropDownList.Items.FindByText("Text");
于 2011-08-03T11:52:16.367 に答える
-2

この方法を試してください、それは私のために働きます:

Combobox1.items[Combobox1.selectedIndex] = "replaced text";
于 2011-01-07T09:12:55.913 に答える
-3

それはうまくいくはずです

Yourcomboboxname.setselecteditem("yourstring");

データベース文字列を設定する場合は、これを使用します

Comboboxname.setselecteditem(ps.get string("databasestring"));
于 2016-02-21T16:53:12.797 に答える