我有一个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();
我不知道那里有什么不对,有人有个主意吗?
谢谢!
答案 0 :(得分:1)
如果已指定列表框的ValueMember属性以指示要从中读取所选项的值的属性,则列表框的SelectedValue将仅返回值。在这种情况下,您要使用的属性是SelectedItem:
match = lbBranches.SelectedItem.ToString();
答案 1 :(得分:0)
当用户输入文本时,可能没有选择任何值(因此错误) - 请记住,用户输入的内容与控件列表框子元素中的选择没有强制或直接关联
使用完整的组合框控件可以更简单地实现你所做的事情,我认为MSDN上的一些例子对你也很有帮助