c#如果我在字符串中有值名称,如何选择列表框项?

时间:2009-07-16 12:00:26

标签: c# listbox

我有一个字符串'item3'和一个带有'item1,item2,item3,item4'的列表框,当我在字符串中有项目名称时,如何在列表框中选择item3?

由于

8 个答案:

答案 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

上的帖子

您可以尝试以下方法之一:

  1. lb.SelectedValue = fieldValue;

  2. lb.SelectedIndex = lb.FindStringExact(fieldValue);

  3. 这是所有列表框的通用方法。您的实现将根据您绑定到列表框的内容而更改。就我而言,它是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;