在winforms中说我有一个列表框。
而且我还有一个线程等待列表框中有一些项目。
假设当前列表框为空,因此线程必须等待。
现在说在列表框中有一些项目线程必须开始执行。
在winforms中说我有一个列表框。
而且我还有一个线程等待列表框中有一些项目。
假设当前列表框为空,因此线程必须等待。
现在说在列表框中有一些项目线程必须开始执行。
Did you think of Timers which can periodic checks the listbox items if there is some item than start your thread and stop checking .
您可以使用线程,但我认为使用基于事件的处理方法会更好。默认情况下,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...
}
}