Поиск элемента управления ListBox и программный выбор ближайшего соответствия - PullRequest
0 голосов
/ 14 марта 2012

У меня есть элемент управления ListBox, заполненный филиалами крупной розничной сети. Сотрудники, использующие систему, должны войти в соответствующую ветку, и я хотел бы, чтобы они могли искать в ListBox, чтобы найти свою ветвь.

Я создал обработчик событий, когда текст в поле поиска изменяется, и уже пытался использовать звук кода в StackOverflow:

private int lastMatch = 0;

private void txtSearch_TextChanged(object sender, EventArgs e)
    {
        int x = 0;
        string match = txtSearch.Text;

        if (txtSearch.Text.Length != 0)
        {
            bool found = true;
            while (found)
            {
                if (lbBranches.Items.Count == x)
                {
                    lbBranches.SetSelected(lastMatch, true);
                    found = false;
                }
                else
                {
                    lbBranches.SetSelected(x, true);
                    match = lbBranches.SelectedValue.ToString();
                    if (match.Contains(txtSearch.Text))
                    {
                        lastMatch = x;
                        found = false;
                    }
                    x++;
                }
            }
        }
    }

Когда я компилирую и начинаю печатать в поле поиска, я получаю эту ошибку:

Object reference not set to an instance of an object.

Строка, о которой идет речь:

match = lbBranches.SelectedValue.ToString();

Понятия не имею, что там может быть не так, у кого-нибудь есть идея?

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 марта 2012

SelectedValue списка будет возвращать значение только в том случае, если вы указали свойство ValueMember списка, чтобы указать свойство, из которого вы хотите прочитать значение для выбранного элемента. В этом случае вы хотите использовать свойство SelectedItem:

match = lbBranches.SelectedItem.ToString();
0 голосов
/ 15 марта 2012

, когда пользователь вводит текст, возможно, что никакое значение не было выбрано (следовательно, ошибка) - имейте в виду, что то, что вводится пользователем, не имеет обязательной или прямой связи с выборами в подэлементе списка элементов управления

возможно, то, что вы делаете, может быть проще реализовать с полным управлением комбинированного списка, и я думаю, что некоторые из примеров в MSDN также могут быть очень полезными для вас

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