【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も見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
他フォームのクリックイベント取得
Visual Basic(VBA)
-
[Excel VBA]コマンドボタンの入力待ち方法
Visual Basic(VBA)
-
-
4
Hideについて(.NET)
Visual Basic(VBA)
-
5
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
6
CloseとDisposeの違い
Visual Basic(VBA)
-
7
VB.netでメソッドからコントロールを取得
Visual Basic(VBA)
-
8
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
Formの表示状態の取得
Visual Basic(VBA)
-
11
特定のキーを押すまでループさせるにはどうすればよいですか。
Visual Basic(VBA)
-
12
イベントの発生を待つ
Visual Basic(VBA)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
Vba Userformを前面に出すについて
Access(アクセス)
-
15
VBA:小数点以下の数字を取得できる関数は?
Visual Basic(VBA)
-
16
Visual Basic.NETの、Form 間での引数の引渡し方法を教えてください。
Visual Basic(VBA)
-
17
メッセージボックスのボタン名変更
Visual Basic(VBA)
-
18
【VB】タブ切り替え時のイベント
Visual Basic(VBA)
-
19
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
20
Visual Basic でのコードをASCII変換、16進変換したものを元に戻す方法を教えてください
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB.NET】別Formのボタンが押...
-
プログラミング、アーキテクチ...
-
CreateDialogについて
-
画像を一定時間ごとに切り替え...
-
VB6.0のHideのバグ?
-
【FLASH】インスタンス名の一覧...
-
外部テキストから画像やリンク...
-
VBScriptでMsgBoxのYesNoボック...
-
C# chart controlの透過について
-
static関数がmapファイルに載ら...
-
ACCESSフォームで、入力から一...
-
Actionscriptでふわふわ感を再...
-
画面の範囲選択
-
アセンブリ言語のcasl2について...
-
'2465'指定した式で参照してい...
-
POIでのテキストボックス作成に...
-
C言語でのマウスを移動とマウス...
-
python ボタンを押すと複数の関...
-
photoshopで書いた四角の枠の中...
-
縦横比率のを変えずに画像のサ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミング、アーキテクチ...
-
【VB.NET】別Formのボタンが押...
-
VB6.0で、フォームから、別のフ...
-
DataTableの件数を取得したい
-
VB6.0のHideのバグ?
-
CreateDialogについて
-
XMLでJPEGスライドを作成_表示...
-
変数の利用方法
-
ウインドウハンドルとインスタ...
-
インスタンスとポインタ
-
フォームの生成と破棄
-
【ActionScript】コンボボック...
-
Flash ステージに初期配置したM...
-
ムービープレビュー時にエラー...
-
背景画像が拡大縮小しつつ、大...
-
IBM Watson Text to Speechを始...
-
flashで音を消す設定について
-
Flashの画面をJPEG画像にしてメ...
-
Python でシャットダウンのコマ...
-
buttonの色を変えたい
おすすめ情報