0

別のスレッドからメールフォームを 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();
        }
    }

あなたが私を助けることができれば、ありがとう.

4

1 に答える 1

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"));
    }
}
于 2012-04-06T17:52:26.820 に答える