0

ここには、私が解決できなかったトリッキーな問題があり、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#にかなり慣れていませんが、これはスレッドに関連していると確信しています。

助けてくれてありがとう。

4

2 に答える 2

0

さて、問題は解決しました。ただし、なぜ問題が存在するのかはよくわかりません。スペクトル形式では、2 番目の形式で静的変数を参照します。今、私はそれらを次のように使用します:

文字列 newFrequency = secondForm.frequency;

これは機能します。ただし、これらの変数の一部はこれを行う必要があります。

string newBandWidth = secondForm.bandwidth.substring(2,4);

これは失敗するコマンドです。「新しい」キーワークが必要だと言われました。

部分文字列を取得する必要なく文字列を提供するコードを変更したところ、すべて正常に動作するようになりました。誰にもアイデアはありますか?

于 2013-11-15T20:15:10.000 に答える