delegate void AddMessageToListBoxDelegate(string str);
public void AddMessageToListbox(string str)
{
if (listBox1.InvokeRequired)
{
AddMessageToListBoxDelegate d = AddMessageToListbox;
listBox1.Invoke(d, str);//三个参数为 委托实例 委托的参数 }
else
{
listBox1.Items.Add(str);
listBox1.SelectedItem = listBox1.Items.Count - 1;
listBox1.ClearSelected();
}
}
调试运行的时候,listbox1.item.add已经执行了,但是在界面上面,显示不了已经添加的信息,求哪位大神给看一下是什么原因
public void AddMessageToListbox(string str)
{
if (listBox1.InvokeRequired)
{
AddMessageToListBoxDelegate d = AddMessageToListbox;
listBox1.Invoke(d, str);//三个参数为 委托实例 委托的参数 }
else
{
listBox1.Items.Add(str);
listBox1.SelectedItem = listBox1.Items.Count - 1;
listBox1.ClearSelected();
}
}
调试运行的时候,listbox1.item.add已经执行了,但是在界面上面,显示不了已经添加的信息,求哪位大神给看一下是什么原因
直接这样不就行了:
在构造函数里加个 Form.CheckForIllegalCrossThreadCalls = false; delegate void AddMessageToListBoxDelegate(string str);
public void AddMessageToListbox(string str)
{ this.listbox1.items.add(str);
}
调用的时候:AddMessageToListBoxDelegate addtoList=new AddMessageToListBoxDelegate(AddMessageToListbox);
addtoList(str,null,null);
listBox1.Invoke(d, str);//三个参数为 委托实例 委托的参数改为AddMessageToListBoxDelegate d = new AddMessageToListBoxDelegate (AddMessageToListbox);
this.Invoke(d, new object[] { value });
private void button1_Click(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(Run, null);
}
private void Run(object pnull)
{
int i=0;
while (true)
{
AddMessageToListbox("第" + i++ + "个");
Thread.Sleep(2000);
} } delegate void AddMessageToListBoxDelegate(string str);
public void AddMessageToListbox(object str)
{
if (listBox1.InvokeRequired)
{
AddMessageToListBoxDelegate d = AddMessageToListbox;
listBox1.Invoke(d, str);//三个参数为 委托实例 委托的参数
}
else
{
listBox1.Items.Add(str);
listBox1.SelectedItem = listBox1.Items.Count - 1;
listBox1.ClearSelected();
}
}
这段代码测试没有问题