c # Как выбрать элемент списка, когда у меня есть имя значения в строке? - PullRequest
5 голосов
/ 16 июля 2009

У меня есть строка 'item3' и список со списком 'item1, item2, item3, item4'. Как выбрать item3 в списке, если у меня есть имя элемента в строке?

Спасибо

Ответы [ 8 ]

15 голосов
/ 16 июля 2009
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);
4 голосов
/ 16 июля 2009
listBox.FindStringExact("item3");

Возвращает индекс первого найденного элемента или ListBox.NoMatches, если совпадений не найдено.

Вы можете позвонить

listBox.SetSelected(index, true);

чтобы выбрать этот пункт

1 голос
/ 16 июля 2009

SelectedValue будет работать, только если вы установили ValueMember для списка.

Далее, даже если вы установите ValueMember, selectedValue не будет работать, если ваш ListBox.Sorted = true

Проверьте мой пост на Установка выбранного элемента в ListBox без зацикливания

Вы можете попробовать один из следующих подходов:

  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;
            }
        }    
    }
    
1 голос
/ 16 июля 2009

Может быть так:

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.");
        }
    }
1 голос
/ 16 июля 2009

Попробуйте использовать метод ListBox.SetSelected.

0 голосов
/ 18 марта 2014
CheckBoxList.Items.FindByValue("Value").Selected = true;
0 голосов
/ 21 февраля 2012
static class ControlHelper
{
    public static void SelectExactMatch(this ComboBox c, string find)
    {
        c.SelectedIndex = c.FindStringExact(find, 0);
    }
}
0 голосов
/ 16 июля 2009

Не выбрано ли выбранное значение для чтения / записи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...