C# 显示/隐藏列表框中的项目
我制作了一个列表框,它工作得很好,我还制作了一个搜索功能,但我想隐藏列表框中的项目,并仅在通过索引搜索时显示它们。 这是我添加项目的代码C# 显示/隐藏列表框中的项目,c#,winforms,listbox,C#,Winforms,Listbox,我制作了一个列表框,它工作得很好,我还制作了一个搜索功能,但我想隐藏列表框中的项目,并仅在通过索引搜索时显示它们。 这是我添加项目的代码 private void Savebtn_Click(object sender, EventArgs e) { addTolist(gatherItem()); refreshView(); } private void addTolist(Person p) { Person.listperson.Add(p); } priva
private void Savebtn_Click(object sender, EventArgs e)
{
addTolist(gatherItem());
refreshView();
}
private void addTolist(Person p)
{
Person.listperson.Add(p);
}
private void refreshView()
{
listBox1.Items.Add(getItem());
}
private String getItem()
{
String result = null;
foreach (Person p in Person.listperson)
{
result = p.lastname;
}
return result;
}
这是我的搜索代码
private void button1_Click(object sender, EventArgs e)
{
int index = listBox1.FindString(textBox6.Text);
if (0 <= index)
{
listBox1.SelectedIndex = index;
}
}
private void按钮1\u单击(对象发送者,事件参数e)
{
int index=listBox1.FindString(textBox6.Text);
如果(0使用winforms没有简单的方法可以做到这一点。使用WPF要容易得多。使用winforms,您必须删除项。从技术上讲,您可以使用数据绑定,但完全不建议这样做,因为根据MSDN文档,listbox应该直接从您的代码中使用
第二个想法,你可以透彻ListBox并设置你想要隐藏的项目,这是不容易的。你可能想考虑把所有的值存储在一个数组中,然后循环通过数组,只添加你想要的元素。或者切换到WPF。
希望这有帮助。您可以在origin one上覆盖一个虚拟列表框,并将origin one设置为不可见。
然后,您可以通过编写如下代码来归档相同的效果
class DummyItem {
public string text;
public int index;
public override string ToString() {
return text;
}
}
public void build_dummy() {
listbox_dummy.Items.Clear();
for (int i = 0; i < listbox_origin.Items.Count; i++) {
// replace with your own judgement
if (! should_hide(listbox_origin.Items[i])) {
DummyItem item = new DummyItem();
item.text = listbox_origin.Items[i].ToString();
item.index = i;
listbox_dummy.Items.Add(item);
}
}
}
private void listbox_dummy_SelectedIndexChanged(object sender, EventArgs e) {
var item = (DummyItem) listbox_dummy.SelectedItem;
var index = item.index;
listbox_origin.SelectedIndex = index;
}
类DummyItem{
公共字符串文本;
公共整数指数;
公共重写字符串ToString(){
返回文本;
}
}
public void build_dummy(){
listbox_dummy.Items.Clear();
对于(int i=0;i
我决定将插入的列表框隐藏起来,然后将搜索到的项目转移到可见的列表框中,这是可能的,但我认为这将是硬编码的:(@AlfredSanz,这会起作用,或者您可以使用我提到的数组