我正在尝试将另一个线程的电子邮件插入到Form1列表视图中,但不知何故它不起作用。这是我的代码:
private delegate void InsertIntoListDelegate(string email);
private void InsertIntoList(string email)
{
if (f1.listView1.InvokeRequired)
{
f1.listView1.Invoke(new InsertIntoListDelegate(InsertIntoList), email);
}
else
{
f1.listView1.Items.Add(email);
f1.listView1.Refresh();
}
}
如果你能帮助我,那么谢谢你。
答案 0 :(得分:2)
试试这个:
private delegate void InsertIntoListDelegate(string email);
public void InsertIntoList(string email)
{
if(InvokeRequired)
{
Invoke(new InsertIntoListDelegate(InsertIntoList), email);
}
else
{
f1.listView1.Items.Add(email);
f1.listView1.Refresh();
}
}
InsertIntoList 是封闭控件的成员,因此应该在该控件上调用而不是列表视图。
尝试这个非常简单的测试,对我有用:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void InsertIntoListDelegate(string email);
public void InsertIntoList(string email)
{
if(InvokeRequired)
{
Invoke(new InsertIntoListDelegate(InsertIntoList), email);
}
else
{
listView1.Items.Add(email);
}
}
private void button1_Click(object sender, System.EventArgs e)
{
Task.Factory.StartNew(() => InsertIntoList("test"));
}
}