Как установить выбранный элемент в comboBox для соответствия моей строке с помощью С#?

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

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

comboBox1.SelectedText = "test1"; 

Ответ 1

Это должно сделать трюк:

Combox1.SelectedIndex = Combox1.FindStringExact("test1")

Ответ 2

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

ComboBox1.Text = "test1";

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

Ответ 3

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

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

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

Ответ 4

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

comboBox1.SelectedItem = "test1";

Ответ 5

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

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

Ответ 6

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

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

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

comboBox1.SelectedItem = "test1";

или

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

Ответ 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);

Ответ 8

ComboBox1.SelectedIndex= ComboBox1.FindString("Matching String");

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

Ответ 9

comboBox1.SelectedItem.Text = "test1";

Ответ 10

Предположим, что test1, test2, test3 принадлежат коллекции comboBox1, следующая инструкция будет работать.

comboBox1.SelectedIndex = 0; 

Ответ 11

Это решение основано на 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;
    }
    

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

Ответ 12

Я заполнил свой ComboBox een DataTable, заполненный из базы данных. Затем я установил DisplayMember и ValueMember. И я использую этот код для установки выбранного элемента.

foreach (DataRowView Row in ComboBox1.Items)
{
    if (Row["ColumnName"].ToString() == "Value") ComboBox1.SelectedItem = Row;
}

Ответ 13

  • Перечислить ListItems в combobox
  • Получить равные команды listindex setobox
  • Установите listindex в найденный.

Но если я увижу такой код, как рецензент кода, я бы рекомендовал пересмотреть весь алгоритм метода.

Ответ 14

У вас нет этого свойства в ComboBox. У вас есть SelectedItem или SelectedIndex. Если у вас есть объекты, которые вы использовали для заполнения поля со списком, вы можете использовать SelectedItem.

Если нет, вы можете получить коллекцию элементов (элементов свойств) и повторить ее до тех пор, пока не получите нужное значение и не используйте это с другими свойствами.

надеюсь, что это поможет.

Ответ 15

_cmbTemplates.SelectedText = "test1"

или, возможно,

_cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1");

Ответ 16

Я использовал KeyValuePair для связывания данных ComboBox, и я хотел найти элемент значение, так что это сработало в моем случае:

comboBox.SelectedItem = comboBox.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == "value to match");

Ответ 17

  ListItem li = DropDownList.Items.FindByValue("13001");
  DropDownList.SelectedIndex = ddlCostCenter.Items.IndexOf(li);

В вашем случае вы можете использовать

DropDownList.Items.FindByText("Text");

Ответ 18

combo.Items.FindByValue("1").Selected = true;

Ответ 19

Все методы, трюки и строки кода ComboBox не будут работать, пока ComboBox не будет иметь родителя.

Ответ 20

Я создал функцию, которая вернет индекс значения

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

Ответ 21

это работает для меня.....

comboBox.DataSource.To<DataTable>().Select(" valueMember = '" + valueToBeSelected + "'")[0]["DislplayMember"];

Ответ 22

Найдите mySecondObject (типа MyObject) в выпадающем списке (содержащем список MyObjects) и выберите элемент:

foreach (MyObject item in comboBox.Items)
{
   if (item.NameOrID == mySecondObject.NameOrID)
    {
        comboBox.SelectedItem = item;
        break;
    }
}

Ответ 23

Вы можете сказать comboBox1.Text = comboBox1.Items[0].ToString();

Ответ 24

Пожалуйста, попробуйте этот способ, он работает для меня:

Combobox1.items[Combobox1.selectedIndex] = "replaced text";

Ответ 25

Он должен работать

Yourcomboboxname.setselecteditem("yourstring");

И если вы хотите установить строку базы данных, используйте этот

Comboboxname.setselecteditem(ps.get string("databasestring"));