我正在尝试使用文本框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();希望这能有所帮助。
发布于 2012-04-02 21:12:17
像这样的东西可能对你有用:
var itemList = registrationListBox.Items.Cast<string>().ToList();
if (itemList.Count > 0)
{
//clear the items from the list
registrationListBox.Items.Clear();
//filter the items and add them to the list
registrationListBox.Items.AddRange(
itemList.Where(i => i.Contains(SrchBox.Text)).ToArray());
}发布于 2012-04-03 08:09:35
是的,这就是过滤的答案。(修改了一点)。我在文本文件里找到了信息。这就是对我起作用的东西
FileInfo registrationsText = new FileInfo(@"name_temp.txt");
StreamReader registrationsSR = registrationsText.OpenText();
var registrationsList = registrationListBox.Items.Cast<string>().ToList();
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
while (!registrationsSR.EndOfStream)
{
registrationListBox.Items.Add(registrationsSR.ReadLine());
}
registrationListBox.EndUpdate();似乎这一错误:
对象引用未设置为对象的实例
来自我代码中的其他地方,不能把手指放在上面。
https://stackoverflow.com/questions/9983720
复制相似问题