我有一个字符串“测试1”和我的组合框包含test1
,test2
和test3
。如何将所选项目设置为“ test1”?也就是说,如何将我的字符串与comboBox之一匹配?
我在想下面的行,但这行不通。
comboBox1.SelectedText = "test1";
SelectedText
将“选定”文本更改为test1。如果未进行“选择”(标记文本),则文本将插入插入符号的位置。
我有一个字符串“测试1”和我的组合框包含test1
,test2
和test3
。如何将所选项目设置为“ test1”?也就是说,如何将我的字符串与comboBox之一匹配?
我在想下面的行,但这行不通。
comboBox1.SelectedText = "test1";
SelectedText
将“选定”文本更改为test1。如果未进行“选择”(标记文本),则文本将插入插入符号的位置。
Answers:
这应该可以解决问题:
Combox1.SelectedIndex = Combox1.FindStringExact("test1")
FindStringExact()
“在组合框中找到与指定字符串匹配的第一项”。
假设您的组合框未绑定数据,则需要在表单的“ items”集合中找到对象的索引,然后将“ selectedindex”属性设置为适当的索引。
comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");
请记住,如果找不到该项,则IndexOf函数可能会引发参数异常。
如果ComboBox中的项目是字符串,则可以尝试:
comboBox1.SelectedItem = "test1";
对我而言,这仅适用于:
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;
}
}
SelectedText是获取或设置字符串编辑所选项目的实际文本在下拉列表作为记录在这里。如果您设置以下内容,则该内容将不可编辑:
comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
用:
comboBox1.SelectedItem = "test1";
要么:
comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1");
我使用了扩展方法:
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);
假设test1,test2,test3属于comboBox1集合,下面的语句将起作用。
comboBox1.SelectedIndex = 0;
该解决方案基于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;
}
希望我能帮上忙!
我已经用数据库填充的DataTable填充了ComboBox。然后,我设置了DisplayMember和ValueMember。我使用此代码来设置所选项目。
foreach (DataRowView Row in ComboBox1.Items)
{
if (Row["ColumnName"].ToString() == "Value") ComboBox1.SelectedItem = Row;
}
_cmbTemplates.SelectedText = "test1"
或许
_cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1");
我将KeyValuePair 用于ComboBox数据绑定,我想按值查找项目,因此在我的情况下有效:
comboBox.SelectedItem = comboBox.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == "value to match");
我创建了一个函数,该函数将返回值的索引
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;
}
这对我有用.....
comboBox.DataSource.To<DataTable>().Select(" valueMember = '" + valueToBeSelected + "'")[0]["DislplayMember"];
你可以说 comboBox1.Text = comboBox1.Items[0].ToString();
它应该工作
Yourcomboboxname.setselecteditem("yourstring");
如果要设置数据库字符串,请使用此
Comboboxname.setselecteditem(ps.get string("databasestring"));