ここには、私が解決できなかったトリッキーな問題があり、msdn フォーラムで質問した人も解決できませんでした。
.net コンポーネントのセットであるサードパーティ製品 (mitov.com のシグナル ラボ) を使用しています。実行すると正常に動作する Windows フォーム アプリを作成しました。この別のフォームが読み込まれる (または表示される、またはアクティブになる...) ときに、別のフォームからこのフォームを表示したいと考えています。
私はすでに別のフォームでこの作業の例を持っています: これは典型的なコードです: 私はメインプログラムからフォーム (SecondForm) をロードしています...
private void SecondForm_Load(object sender, EventArgs e)
{
Form _macros = new Macros(this); //this works perfectly fine
_macros.show(this);
//this is where I have no success
Form _spectrum = new SpectrumScope;
_spectrum.Show();
}
フォームが表示されない、_spectrum をインスタンス化しないという例外、クロス スレッド操作が許可されていないというエラー、プロセッサ間でクロックが同期されていないというメッセージが表示されたブルー スクリーンなど、さまざまなエラーが発生します。
「Second Form」にボタンを配置し、show form コードをクリック イベントに追加すると、正常に動作します。form.load の代わりに form.activated または form shown を使用しようとしても、違いはありません。Shown を形成する時間を追加すると、button.performClick が実行されますが、違いはありません。
明らかに、多くのコンポーネント (および舞台裏の多くのスレッド) を含むフォームは、ユーザーによって開かれていないという事実を好まない.
私はC#にかなり慣れていませんが、これはスレッドに関連していると確信しています。
助けてくれてありがとう。