1

いくつかの追加に問題がありpicture boxesます。私はform(そしてそれはクラスです)と別のクラスを持っています。私がやりたいのはpicture boxes、2 番目のクラスの一部を に入れることですがform、方法がわかりません。ああ、画像ボックスを2番目のクラスからメインのクラスに送信してそこに追加したくはありませんが、直接追加するだけです。次のようなことを試してみると:

Form1.ActiveForm.Controls.Add(x); 

(ここで、x は私の画像ボックスです) 2 番目のクラスから'Cross-thread operation not valid'例外が発生します。

アドバイスをありがとう!

4

1 に答える 1

0

非 UI スレッドで show your pictures を実行しようとしていますか? 通常、これはクロススレッド操作が無効な例外を取得する方法です。

クラスで次のようなことをする必要があるかもしれません。

if (this.InvokeRequired)
{
   this.Invoke(() => ActiveForm.Controls.Add(x));
}
else
{
   ActiveForm.Controls.Add(x);
}

これにより、UI スレッドを使用してコードを実行できるようになります。

于 2013-03-17T21:32:13.720 に答える