我正在尝试使用文本框realTime中的文本筛选列表框。
以下是代码:
private void SrchBox_TextChanged_1(object sender, EventArgs e)
{
var registrationsList = registrationListBox.Items.Cast<String>().ToList();
registrationListBox.BeginUpdate();
registrationListBox.Items.Clear();
foreach (string str in registrationsList)
{
if (str.Contains(SrchBox.Text))
{
registrationListBox.Items.Add(str);
}
}
registrationListBox.EndUpdate();
}以下是问题所在:
当我运行这个程序时,我得到了一个错误:Object reference not set to an instance of an object
你能给我指出正确的方向吗?
发布于 2012-04-02 21:08:51
很难仅从代码中扣除,但我认为您的过滤问题是从不同方面产生的:
( a)您需要一个显示在Model上的数据的ListBox。你需要一个收藏“物品”的地方(Dictionary,DataBase,XML,BinaryFile,Collection),简而言之,就是某种商店。
要在UI上显示数据,总是从存储区中选择数据,过滤并放到UI中。
( b)在第一点之后,过滤代码可以如下所示(伪代码)
var registrationsList = DataStore.ToList(); //return original data from Store
registrationListBox.BeginUpdate();
registrationListBox.Items.Clear();
if(!string.IsNullOrEmpty(SrchBox.Text))
{
foreach (string str in registrationsList)
{
if (str.Contains(SrchBox.Text))
{
registrationListBox.Items.Add(str);
}
}
}
else
registrationListBox.Items.AddRange(registrationsList); //there is no any filter string, so add all data we have in Store
registrationListBox.EndUpdate();希望这能有所帮助。
https://stackoverflow.com/questions/9983720
复制相似问题