2011-01-27 13 views
0

コントロールを移動したり、少なくともコントロールを別のスレッドにコピーしたり、コントロールを作成したりすることは可能です。その理由は、コントロールをバックグラウンドスレッドで完全にロードし、ロードが完了したらコントロールを別のスレッドに移動したいからです。たとえば、winforms - コントロールを別のスレッドに移動

答えて

1

いいえ、不可能です。コントロールは、メインスレッドで作成する必要があります。

あなたはそのようなあなたのコードを変更する必要があります。呼び出しを使用して別々のスレッドからコントロールを更新することができます

BackgrundworkRunasync(object sender, DoWorkEventArgs e) 
{ 
    e.Result = GetData(); 
} 

BackGroundWorkerComplete (object sender, RunWorkerCompletedEventArgs e) 
{ 
    CreateControl mycontrol = new CreateControl() //Tyep of WindowsForm 
    mycontrol.Data = e.Result; 
    myControl.mdiparent = this; 
    myControl.Show(); 
} 
0

いいえ、これは許可されていません。すべてのコントロールは、シングルスレッドで処理する必要があります。ウィンドウを作成するために使用したスレッドです。通常、プロセスの最初のスレッドです。

関連する問題