- ベストアンサー
vb.netでのプログラミング
vb.netでフォーム間のやりとりがうまくいきません。 以下のような機能を実現させるにはどうしたらよいでしょうか? form1のボタンAを押したときにform2のボタンをDISABLEにする。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
親子関係のフォームであれば1、2の方法で管理できますが、兄弟関係であるならマルチスレッドでやる方がお勧めです。 1、2の方法でも呼び出すタイミングなどを工夫すればいけるでしょうが、その場合はDoEventsなどを適度に挟んだりして、共有したフラグで切り替えたりするとか。 でマルチスレッドでの方法は一言では説明しにくいので、参考URLあたりで勉強なさって下さい。
その他の回答 (2)
- popesyu
- ベストアンサー率36% (1782/4883)
formの変数を宣言し、オブジェクトを生成する正しい構文は以下のようになります。 dim subform as form2 subform = new form2()
お礼
実行してみました。とりあえず、できました。 どうもありがとうございました。 しかし、 はじめにform2が表示された状態で フォーム2のボタンの状態をかえたいのですが・・・ newであたらしいインスタンスを作成すると 別のWINDOWが設定したボタンの状態でひらいています。 FORM1、2とイベントすべてPUBLICの設定にしているのですがうまくいきません。 お知恵をお貸しください。 お願いします。
補足
たびたびのご回答 ありがとうございました。 とりあえず、今は実行できる環境に いないので、 明日実行してみます(^^)
- popesyu
- ベストアンサー率36% (1782/4883)
方法はいろいろありますが。 例えばform2を開く前にまずインスタンス化しますよね。その段階でform2ボタンをDISABLE。でform2をshow。
補足
ご回答ありがとうございます。 返事が遅くなってすみません。 form1,form2を表示させて、form1のボタンAを押したら form2のボタンBをDISABLEにしようと思うんですが、 FORM間の値の受け渡しがうまくいっていないのです。 form1のほうでform2を Dim subform as form2 というふうにインスタンス化し、 その中でsubform.bottunB.enable = 0 とやると、 追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。 とひょうじされてしまいます。 よろしくお願いします。
お礼
たびたびのご回答本当にどうもありがとうございます。 返事が遅くなってしまってすみませんでした。 マルチスレッドというのがあるのですね。 質問の内容を実行するのに色々と検索をしてみたのですが、 キーワードが今ひとつわからずに困っていました。 URLを参考にしてやってみます。