如何设置combobox中选定的项目以匹配我的string使用C#?
我有一个string“test1”,我的combobox包含test1
, test2
和test3
。 如何将所选项目设置为“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";