
【VB.NET】別Formのボタンが押されるまで待機する方法??
今晩は,いつもいつも勉強させていただいております.
質問させていたきます.どうぞよろしくお願いいたします.
開発環境XP+VB2008になります。
今までは、コード中のMsgBoxで続行か中断かを選択するために
Private Sub Button1_Click
:
:
:
If MsgBox("続行しますか?", MsgBoxStyle.OkCancel, "確認") = vbOK Then
Else
Exit Sub
End If
:
:
:
End Sub
としておりましたが、このMsgBox上に複数のコントロールが必要になって
しまいましたので、同じ形のFormを作成いたしました。
(Form_MsgBox上に、ButtonOK、ButtonCancel、Label1に加え
TextBox1を配置)
Form_MsgBox.LabelMsg.Text = "確認"
Form_MsgBox.Show()
が、このメッセージ表示中だけPrivate Sub Button1_Clickを
止めておく方法がわかりません。。。
ButtonOKかButtonCancelが押されるまで待機したいのですが。。
検索いたしておりますと、何か他のアプリを起動した場合に
それが終わるまで待機する、といった方法は結構見つかるのですが。。。
何か良さそうな方法など思いつかれるようでございましたら、
是非ともアドバイスいただきたくお願い申し上げます。
もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Form_MsgBoxを ShowDialogで表示してやるってのはダメなんですか?
親FormのButton1を押した際に 親Form内の他のコントロールを操作したいのですとこの手法は使えませんが ・・・
どうもありがとうございます!
うまくいきそうでございます^^
一つだけ、Form_MsgBox起動時に、その上にあるLabel1.Textが
変わってくれません。。。orz
Form_MsgBox.Label1.Text = "確認"
'↑この行が機能してくれておりません。。
Dim f As New Form_MsgBox
If f.ShowDialog(Me) = DialogResult.OK Then
Else
Exit Sub
End If
といたしましたところ、すべてうまく動作してくれるのでございますが、
Label1.Textだけデフォルトのまま変わってくれません。色々と試しておりますが。。
できればタイトルだけ変えて使い回したいのでございますが。。
もし何かご指摘いただけるようなことなどございましたら、
是非ともアドバイスいただきたくお願い申し上げますm(_ _)m
No.3
- 回答日時:
Formのインスタンスを生成してから Label1.Textを変更しましょう
' ここではなく
'Form_MsgBox.Label1.Text = "確認"
'↑この行が機能してくれておりません。。
Dim f As New Form_MsgBox
' ここで インスタンス経由で設定
f.Label1.Text = "確認"
If f.ShowDialog(Me) = DialogResult.OK Then
Else
Exit Sub
End If
といった具合で ・・・
この回答への補足
(お礼後の補足になります。)
しつこくどうも申し訳ございません^^;
「ベストアンサー」ですが、後からご覧になった方々が
分かりやすいように、 ShowDialogをご紹介いただけた
回答No.2に付けさせていただきます。
この度は誠にありがとうございました! m(_ _)m
どうもありがとうございます!
助かりました^^
今いろいろと動作確認いたしておりますが、
この方法だと他のフォームへのFormMouseDownが
取れないようでございますねー。。。
ずっと検索いたしておりますが解決策が見つかりませんorz
(タイトルの件はアドバイスいただけたお陰ですべて解決できましたので
本質問は解決済みとさせていただきますm(_ _)m )
ご助言いただけたお陰でまたできることの幅が広がりました^^
この度はご閲覧・アドバイスいただきまして
誠にありがとうございました!!
No.1
- 回答日時:
Form_MsgBoxにメンバ変数をひとつ設定して
それをチェックしに行く、アクセス関数を設けてはどうでしょうか。
押されていない間、Do ~Loopステートメントで待ち続ける。
Form_MsgBox側では、どのボタンが押されたかを格納する変数を用意しておきます。
考え方としては、これでいけるのかな。と思います。
注意しなければならないのは
メンバ変数の初期化です。
これを怠ると、2回目同じ処理に来たときに素通りしてしまいます。
どうもありがとうございます!
Form_MsgBox側のButtonOK_Click時にボタン自身のTagを
切り替えるようにいたしまして、Form1側でそれを待つように
してみましたが、Form_MsgBoxが表示されると同時に固まってしまいます。。。orz
Do Until Form_MsgBox.ButtonOK.Tag = 1 or Form_MsgBox.ButtonCancel.Tag = 1
System.Threading.Thread.Sleep(1000)
Loop
もう少し考えてみます!この度はご親切にアドバイスいただき
誠にありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Excel VBA ユーザーフォーム 複数のユーザーフォームの閉じ方。 2 2022/04/27 11:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBAユーザーフォームでテキストボックスについて。 1 2022/05/31 12:23
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
このQ&Aを見た人はこんなQ&Aも見ています
-
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
-
4
特定のキーを押すまでループさせるにはどうすればよいですか。
Visual Basic(VBA)
-
5
文字列の後ろから必要分だけ削除したい。
Visual Basic(VBA)
-
6
[Excel VBA]コマンドボタンの入力待ち方法
Visual Basic(VBA)
-
7
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
8
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
9
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
10
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
11
VBでUSB制御プログラム作成する方法
Visual Basic(VBA)
-
12
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
-
13
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
14
VB.NETで他のEXEを実行させる
Visual Basic(VBA)
-
15
フォームを画面のど真ん中に表示させたいのですが
Visual Basic(VBA)
-
16
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CREATESTRUCT と GetWindowLong
-
シューティングゲームの自機の...
-
3つ以上のインスタンスの移動
-
画像を一定時間ごとに切り替え...
-
チェックボックスの制御(onCli...
-
CreateDialogについて
-
前の質問が消えてしまいました
-
XMLから読み込んだデータを数値...
-
OpenGLで背景をグラデーション...
-
テキストファイルの読込について
-
【FLASH】onLoadCompleteで外部...
-
VB.NET2005 DataGridViewでレコ...
-
乱数 parafla
-
吸着後の事
-
右クリックでデータの取り込み...
-
楕円の軌道に傾斜をつける方法...
-
attachMovieについて(長文)
-
変数に256文字以上のテキストを...
-
VBAで改行の入ったデータの正規...
-
アイネットディーというレンタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6.0で、フォームから、別のフ...
-
クリックしたインスタンスを削...
-
【VB.NET】別Formのボタンが押...
-
DataTableの件数を取得したい
-
onRollOverの使い方が分かりま...
-
flash画像の再生・ボタンによる...
-
一番深度が深いインスタンス名...
-
【ActionScript】コンボボック...
-
ラベルでの移動でテキストの受...
-
チェックボックスの制御(onCli...
-
as3 getChildByNameに変数を利...
-
フォームの生成と破棄
-
VB6.0のHideのバグ?
-
Python でシャットダウンのコマ...
-
gotoAndPlayでのインスタンス指...
-
インスタンスとポインタ
-
携帯Lite1.1用のプログラム
-
DLL(非MFC)からのDialogBox関数...
-
外部テキストが読み込めません
-
プログラミング、アーキテクチ...
おすすめ情報