如何使用等待或线程等待事件发生
问题描述:
答
你有没有想过定时器可以定期检查列表框项目,如果有一些项目比 开始你的线程并停止检查。
答
你可以使用线程,但我认为用事件处理方法会更好。默认情况下,ListBox类没有添加项目的事件,但您可以扩展该类以创建自己的项目。下面是你会怎么做一个例子:
public class MyListBox : ListBox
{
private const int LB_ADDSTRING = 0x180;
private const int LB_INSERTSTRING = 0x181;
protected override void WndProc(ref Message m)
{
if (m.Msg == LB_ADDSTRING || m.Msg == LB_INSERTSTRING)
{
OnItemAdded(this, new EventArgs());
}
base.WndProc(ref m);
}
public event EventHandler ItemAdded;
protected void OnItemAdded(object sender, EventArgs e)
{
if (ItemAdded != null)
ItemAdded(sender, e);
}
}
一旦你取得了这个类,只是用它的形式。
public partial class Form1 : Form
{
MyListBox lb = new MyListBox();
public Form1()
{
InitializeComponent();
this.Controls.Add(lb);
lb.ItemAdded += lb_ItemAdded;
}
void lb_ItemAdded(object sender, EventArgs e)
{
// process item here...
}
}
你试过了什么吗?显示你的努力和阅读[常见问题]和[问] – 2013-03-14 06:42:28
为什么这需要成为一个线程?你为什么不能处理一个事件? – 2013-03-14 06:48:08
哪个事件? ListBox中没有ItemsChanged或ItemsAdded事件 – TalentTuner 2013-03-14 06:49:50