如何设置combobox中选定的项目以匹配我的string使用C#?

我有一个string“test1”,我的combobox包含test1test2test3 。 如何将所选项目设置为“test1”? 也就是说,如何将我的string与其中一个combobox项目匹配?

我正在考虑下面的行,但这不起作用。

 comboBox1.SelectedText = "test1"; 

你有没有尝试过Text属性? 它适用于我。

 ComboBox1.Text = "test1"; 

SelectedText属性用于combobox的文本框部分中可编辑文本的选定部分。

这应该做的伎俩:

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

假设您的combobox不是数据绑定的,您将需要在表单的“items”集合中find对象的索引,然后将“selectedindex”属性设置为适当的索引。

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

请记住,如果没有find该项目,IndexOf函数可能会引发争论。

如果ComboBox中的项目是string,则可以尝试:

 comboBox1.SelectedItem = "test1"; 

对我来说,这只是工作:

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

MOD:如果你有自己的对象作为在combobox中设置的项目,那么将ComboBoxItemreplace为其中的一个:

 foreach (Debitor d in debitorCombo.Items) { if (d.Name == "Chuck Norris") { debitorCombo.SelectedItem = d; break; } } 

SelectedText是在string编辑器中获取或设置combobox中所选项目的实际文本,如此处所述。 如果你设置了这个不可编辑的话:

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

使用:

 comboBox1.SelectedItem = "test1"; 

要么:

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

假设test1,test2,test3属于comboBox1集合,下面的语句将起作用。

 comboBox1.SelectedIndex = 0; 

我使用了一个扩展方法:

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

该解决scheme基于MSDN,并进行了一些修改。

  • 它find确切的或string的一部分,并设置它。

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

我希望我帮助!

我已经用我的ComboBox填充了从数据库填充的DataTable。 然后我设置了DisplayMember和ValueMember。 我用这个代码来设置select的项目。

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

ComboBox中没有该属性。 您有SelectedItem或SelectedIndex。 如果你有用来填充combobox的对象,那么你可以使用SelectedItem。

如果没有,你可以得到项目(属性项目)的集合,并迭代,直到你得到你想要的值,并与其他属性一起使用。

希望它有帮助。

  • 枚举combobox中的ListItems
  • 获得相同的listindex设置combobox
  • 将listindex设置为find的那个。

但是如果我看到这样的代码作为代码审查者,我会build议重新考虑所有的方法algorithm。

我用ComboBox数据绑定KeyValuePair ,我想按价值查找项目,所以这在我的情况下工作:

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

或者可能

 _cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1"); 
  ListItem li = DropDownList.Items.FindByValue("13001"); DropDownList.SelectedIndex = ddlCostCenter.Items.IndexOf(li); 

为了你的情况,你可以使用

 DropDownList.Items.FindByText("Text"); 

所有方法,技巧和代码行设置combobox项目将不会工作,直到combobox有一个父项。

我创build了一个函数,它将返回值的索引

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

你可以说comboBox1.Text = comboBox1.Items[0].ToString();

这为我工作…..

 comboBox.DataSource.To<DataTable>().Select(" valueMember = '" + valueToBeSelected + "'")[0]["DislplayMember"]; 
 combo.Items.FindByValue("1").Selected = true; 

它应该工作

 Yourcomboboxname.setselecteditem("yourstring"); 

如果你想设置数据库string使用这个

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

请尝试这种方式,它适用于我:

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