我有一个字符串'item3'和一个带有'item1,item2,item3,item4'的列表框,当我在字符串中有项目名称时,如何在列表框中选择item3?
由于
答案 0 :(得分:15)
int index = listBox1.FindString("item3");
// Determine if a valid index is returned. Select the item if it is valid.
if (index != -1)
listBox1.SetSelected(index,true);
答案 1 :(得分:4)
listBox.FindStringExact("item3");
返回找到的第一个项目的索引,如果未找到匹配项,则返回ListBox.NoMatches。
然后你可以打电话listBox.SetSelected(index, true);
选择此项目
答案 2 :(得分:1)
尝试使用ListBox.SetSelected
方法。
答案 3 :(得分:1)
也许是这样的:
public bool SelectItem(ListBox listBox, string item)
{
bool contains = listBox.Items.Contains(item);
if (!contains)
return false;
listBox.SelectedItem = item;
return listBox.SelectedItems.Contains(item);
}
测试方法:
public void Test()
{
string item = "item1";
if (!SelectItem(listBox, item))
{
MessageBox.Show("Item not found.");
}
}
答案 4 :(得分:1)
SelectedValue仅在您为列表框设置了ValueMember时才有效。
此外,即使您设置了ValueMember,如果ListBox.Sorted = true,selectedValue将不起作用。
查看Setting selected item in a ListBox without looping
上的帖子您可以尝试以下方法之一:
lb.SelectedValue = fieldValue;
lb.SelectedIndex = lb.FindStringExact(fieldValue);
这是所有列表框的通用方法。您的实现将根据您绑定到列表框的内容而更改。就我而言,它是DataTable。
private void SetSelectedIndex(ListBox lb, string value)
{
for (int i = 0; i < lb.Items.Count; i++)
{
DataRowView dr = lb.Items[i] as DataRowView;
if (dr["colName"].ToString() == value)
{
lb.SelectedIndices.Add(i);
break;
}
}
}
答案 5 :(得分:0)
Not SelectedValue是否读/写?
答案 6 :(得分:0)
static class ControlHelper
{
public static void SelectExactMatch(this ComboBox c, string find)
{
c.SelectedIndex = c.FindStringExact(find, 0);
}
}
答案 7 :(得分:0)
CheckBoxList.Items.FindByValue("Value").Selected = true;