我不知道如何解释,所以这是我的代码:
this.Invoke(listBox1.Items.Add, new Object[] { e.Data.ToString() });
但是,如果我没有任何错误,一切都会好的,但遗憾的是我有2个错误:
错误1
最佳重载方法匹配' System.Windows.Forms.Control.Invoke(System.Delegate,params object [])'有一些无效的论点
错误2
参数1:无法从'方法组转换'到' System.Delegate'
我应该怎样做才能克服这些例外情况?
答案 0 :(得分:8)
Invoke
要求您使用委托作为第一个参数。 ListBox.Items.Add
是方法,而非委托。
但是,你可以使用它:
this.Invoke((Action)delegate()
{
listBox1.Items.Add(e.Data.ToString());
});
答案 1 :(得分:5)
设置要使用的委托。
Invoke(new Action(() =>
{
// Do it
}));
答案 2 :(得分:-1)
您可以检查控件是否需要调用,如果是,则调用它:
if(listBox1.InvokeRequired)
listBox1.Invoke((Action)(()=> listBox1.Items.Add(e.Data.ToString())); //if e.Data is the object to add it to listBox!