如何使用C#将comboBox中选定的项目设置为与我的字符串匹配?

236

我有一个字符串 "test1",我的组合框包含 test1test2test3。如何将选定的项目设置为 "test1"?也就是说,如何将我的字符串与组合框中的一个项目匹配?

我想到了下面这行代码,但它不起作用。

comboBox1.SelectedText = "test1"; 

它为什么不工作?当这行代码运行时会发生什么? - Kate Gregory
@KateGregory 它只是将“test1”字符串连接到现有文本中。 - solujic
如果您知道该项的值,可以使用以下方法:comboBox1.SelectedValue = 您的字符串的值; - César León
SelectedText 将“选定”的文本更改为 test1。如果没有进行“选择”(标记的文本),则文本将插入插入符号位置。 - AaA
27个回答

5
假设test1、test2、test3属于comboBox1集合,下面的语句将起作用。
comboBox1.SelectedIndex = 0; 

这并不总是有效的... 请参见此处:https://dev59.com/4GnWa4cB1Zd3GeqP03i2 - JGFMK

5

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

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

2
我使用了 KeyValuePair 来绑定 ComboBox 数据,并且想通过 value 查找项目,所以在我的情况下这个方法可行:
comboBox.SelectedItem = comboBox.Items.Cast<KeyValuePair<string,string>>().First(item=> item.Value == "value to match");

2
  • 枚举组合框中的列表项
  • 获取相等的列表索引设置组合框
  • 将列表索引设置为找到的索引。

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


3
那你为什么把它作为答案呢? - user1017882

2

ComboBox 中没有该属性。您可以使用 SelectedItem 或 SelectedIndex。如果您有用于填充组合框的对象,则可以使用 SelectedItem。

如果没有,您可以获取项目集合(属性 Items)并迭代该集合,直到获得所需值,并将其与其他属性一起使用。

希望能帮到您。


2
_cmbTemplates.SelectedText = "test1"

或者也许

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

使用这段代码,你将一个布尔值分配给SelectedItem属性...在我看来不会起作用。 - Frederik Gheysels

2
在下拉列表(包含MyObjects列表)中查找类型为MyObject的mySecondObject,并选择该项:
foreach (MyObject item in comboBox.Items)
{
   if (item.NameOrID == mySecondObject.NameOrID)
    {
        comboBox.SelectedItem = item;
        break;
    }
}

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

对于您的情况,您可以使用

DropDownList.Items.FindByText("Text");

1

这对我有效......

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

1
虽然这段代码可能回答了问题,但更好的做法是解释如何解决问题并提供代码作为示例或参考。仅有代码的回答可能会令人困惑并缺乏上下文。 - Robert Columbia
谢谢你的建议! - Jaydeep Karena

1

如果你是通过数据集来绑定数据源,那么你应该使用"SelectedValue"

cmbCategoryList.SelectedValue = (int)dsLookUp.Tables[0].Select("WHERE PRODUCTCATEGORYID = 1")[0]["ID"];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接