Как установить выбранный элемент в поле со списком, чтобы соответствовать моей строке с помощью C #? - PullRequest
176 голосов
/ 16 января 2009

У меня есть строка "test1", и мой comboBox содержит test1, test2 и test3. Как мне установить выбранный пункт на «test1»? То есть как мне сопоставить мою строку с одним из элементов comboBox?

Я думал о строке ниже, но это не работает.

comboBox1.SelectedText = "test1"; 

Ответы [ 25 ]

253 голосов
/ 16 января 2009

Это должно сработать:

Combox1.SelectedIndex = Combox1.FindStringExact("test1")
201 голосов
/ 17 января 2009

Вы пробовали свойство Text ? Меня устраивает.

ComboBox1.Text = "test1";

Свойство SelectedText предназначено для выделенной части редактируемого текста в части текстового поля комбинированного окна.

47 голосов
/ 16 января 2009

Предполагая, что ваш комбинированный список не привязан к данным, вам нужно будет найти индекс объекта в коллекции "items" в вашей форме, а затем установить для свойства selectedindex соответствующий индекс.

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

Имейте в виду, что функция IndexOf может выдавать исключение аргумента, если элемент не найден.

35 голосов
/ 16 января 2009

Если элементы в вашем ComboBox являются строками, вы можете попробовать:

comboBox1.SelectedItem = "test1";
10 голосов
/ 09 июля 2010

Для меня это сработало только:

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;
    }
}
7 голосов
/ 17 января 2009

SelectedText - для получения или установки фактического текста в редакторе строк для выбранного элемента в выпадающем списке, как описано здесь . Это будет недоступно для редактирования, если вы установите:

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

Использование:

comboBox1.SelectedItem = "test1";

или

comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");
7 голосов
/ 12 июня 2014

Я использовал метод расширения:

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);
6 голосов
/ 18 октября 2018
ComboBox1.SelectedIndex= ComboBox1.FindString("Matching String");

Попробуйте это в Windows Form.

5 голосов
/ 21 апреля 2011
comboBox1.SelectedItem.Text = "test1";
4 голосов
/ 01 августа 2011

Это решение основано на MSDN с некоторыми изменениями, которые я сделал.

  • Находит точное или PART строки и устанавливает его.

    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;
    }
    

Надеюсь, я помог!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...