0

を取得する必要があるバックグラウンド ワーカーがありますがcomboBox1.SelectedItem、別のスレッド上にあるため、GUI に「到達」できません (GUI はメイン スレッド上にあるため)。

どうすればいいですか?

デリゲートを使用してみましたが、うまくいかないようです。

private delegate string ReadComboDelegate(ComboBox c);

private string ReadComboBox(ComboBox c)
{
    if(c.InvokeRequired)
    {
        ReadComboDelegate del = new ReadComboDelegate(this.ReadComboBox);
        return (string) c.Invoke(del,c);
    }
    else
    {
        return c.Text;
    }
}
4

2 に答える 2

0

ReportProgress 呼び出し中にコンボボックスを読み取ることができます。

于 2012-05-03T10:50:41.357 に答える
0

理想的には、バックグラウンド ワーカーを表すメソッドに SelectedItem (および必要なその他のデータ) を渡す必要があります。

それが不可能な場合は、comboBox1.Invokeメソッドを使用して UI スレッドと通信できます。

于 2012-05-03T10:17:31.673 に答える