VB.NET 2010でConfirmMessageのテキストボックス版を作成する方法

このQ&Aのポイント
  • VB.NET 2010を使用して、Windowsフォーム画面の開発をしている場合、ConfirmMessageのテキストボックス版を作成する方法を教えてください。
  • 特定の文字を入力するまで処理を待機する動作を実現したいです。
  • TextBoxのValidatingイベントを使用して、フォーカスが抜けないようにする処理を追加し、Timerを使用して待機時間を設定しますが、その後の処理方法がわかりません。教えてください。
回答を見る
  • ベストアンサー

テキストボックスでConfirmMessage

お世話になっております VB.NET 2010 Windows7 Windowsフォーム画面の開発をしています ConfirmMessageのテキストボックス版を作成しようとしています 特定の文字を入れるまで処理をしないという動きを作成したいのですが、どうもできません 「Form_Closing」に、「TextBoxに"Y"が入れられれば「画面を閉じる」、"N"なら「画面は閉じない」という 処理等です イベントだけでなく、関数にも"Y"が入れられたら処理A、"N"が入れられたら処理Bという風に、 confirmの「はい」「いいえ」みたいにテキストボックスを制御したいです とりあえず、TextBoxのValidating処理に、「"Y"か"N"が入れられるまではフォーカスが抜けない」という 処理を入れ、Timerを入れました しかし、ここからがわかりません・・・ すいませんが、ご教授お願いします m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

ConfirmMessage という言い方を日本人は中々しないと 思うんですよ。既存の確認メッセージって、Messagebox.Show でまとめられてて、呼び出し時の引数でアイコンやボタンが 変わりますからね。メッセージボックスと言った方が通じると 思います。それとももっと別なものなんでしょうか? Messagebox という既存の部品があるのだから、動作は まねた方が良いと思います。確認メッセージというのは 選ばれた選択肢に応じた戻り値を返します。呼び出し側で それを元に条件分岐できるわけです。 戻り値は DialogResult 列挙体でまとめられています。 そのまま使ってしまえばすぐ出来てしまいますが。 質問文では ConfirmMessage の方で何かしようとしている ような説明なので、何がしたいのかよく分からないです。 >「"Y"か"N"が入れられるまではフォーカスが抜けない」 というのは、"Y"か"N"が入れられたらフォーカスを抜け るという事ですか? それならそのタイミングで"Y"が入っているか"N"が入ってるか 見て処理を分ければいいのでは?(Timer要りませんね) 特に悩むような内容がこちらに伝わってきませんでしたが。

kapibaraPG
質問者

お礼

回答ありがとうございます 説明不足があってすいません MessageConfirm は 「showで、ボタンをはい、いいえにしているメッセージボックス」のことです そして、今回は「マウスを使わない画面」なので、メッセージボックスの類は一切使えません テキストボックスやマスクテキストボックス、フレックスグリッド、タブページ(とファンクションキー)で構成しています DOS画面のようなイメージです >「"Y"か"N"が入れられるまではフォーカスが抜けない」 >というのは、"Y"か"N"が入れられたらフォーカスを抜け >るという事ですか? そのような感じです 「"Y"か"N"が入れられて、エンターを押したら再びMe.Close()処理を行う」にしました "YかNを入れられるまでフォームを閉じる処理を止める"ということにばかり気を取られて、テキストボックスのキーダウンを見逃していました ありがとうございました

その他の回答 (1)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

> そして、今回は「マウスを使わない画面」なので、メッセージボックスの類は一切使えません マウス使わなくてもメッセージボックスは使えるけどね。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  Select Case MessageBox.Show("test", "test", MessageBoxButtons.YesNo)   Case Windows.Forms.DialogResult.Yes    MessageBox.Show("Yes")   Case Windows.Forms.DialogResult.No    MessageBox.Show("No")  End Select End Sub メッセージボックスで"Y","N"押してみたら?

kapibaraPG
質問者

お礼

回答ありがとうございます 試してみました キーボードでもできるのですね! 初めて知りました! 今回は、AVXみたいな画面をwindowsで再現しないとなのでメッセージボックスを出すことも禁止なんです・・・ ありがとうございました

関連するQ&A

  • vb2005 で複数のテキストボックスのイベントについて

    vb2005で タブの中に、複数のテキストボックスが存在しています。(15個程) その中の指定した10個のみ、フォーカスを外したときにイベントを 発生させるよい方法はありますでしょうか。 一つのテキストボックスは下記で行えるのですが、複数の場合よい方法はありますでしょうか。 Private Sub Textabc_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Textabc.Validating ~~処理~~ End Sub

  • テキストボックスへの引数によるフォーカスの設定

    こんにちは。 ASP.NET(VB)でサイトを作っています。 ページを表示した時にテキストボックスにフォーカスを設定したいと思っています。 ネットなどで検索していましたら<body onLoad="document.Form.textbox.focus()"> とすれば出来るようなので、実際に設定してみましたら、「'document.form.LoginID'はNullまたはオブジェクトではありません」というエラーが出てしまいます。 どうすればASPのコントロールにフォーカスを設定できますか?

  • エクセルVBA テキストボックスへのセットフォーカスについて

    エクセルVBAでユーザーフォーム内に配置されたテキストボックス への数値の入力時に、指定範囲内になければメッセージボックスで 規格外であることを警告し、その規格外が入力されたテキストボックス を強制的に空欄にし、次のテキストボックスにフォーカスを移動させずに、入力間違いのテキストボックスにフォーカスを戻したいのですが どうすればよいのでしょうか? 自分で考えた構文です。 Private Sub TextBox1_AfterUpdate() Dim A As Single A = TextBox1.Text If A < 1.99 Or A > 3.00 Then MsgBox "規格外!!"     TextBox1.Text = "" TextBox1.SetFoucus End If Exit Sub End Sub これですと、次のテキストボックスにフォーカスが移動してしまいます。 次のテキストボックスにフォーカスを移動させずに、規格内の値が 入力されるまでフォーカスを移動させない方法を教えて下さい。 お願い致します。

  • テキストボックス 空白確認

    エクセル VBAで コマンドボタンをクリックすると テキストボックスに空白があった場合 空白のテキストボックスにセットフォーカスしたいのですが 下記のように少ない場合は まだいいですが 多くなってきたとき見易さの面でも簡単にしたいのですが VBだとコントロール配列のインデックス値をループ処理 すればよいと思いますがVBAだとどのようにすればいいのでしょうか? Private Sub CommandButton3_Click() If TextBox2 = "" Then TextBox2.SetFocus ElseIf TextBox3 = "" Then TextBo3.SetFocus ElseIf TextBox4 = "" Then TextBox4.SetFocus ElseIf TextBox5 = "" Then TextBox5.SetFocus End If 御願いします。

  • VB.NET テキストボックスの入力チェック

    Visual Basic 2008 に関する質問です。 画面のテキストボックスの入力値をチェックする処理として、 Validatingイベントを使用しています。 例えば、 画面上に配置しているボタンをクリックして画面を閉じさせたい場合(Application.Exit()等)、 テキストボックスの値が未入力であると、上記の入力チェックが先にはしってしまい、 画面を閉じることができません。 閉じるボタンの処理を最優先させる方法について、 どなたかご教授いただけませんでしょうか? (※初歩的なご質問で大変申し訳ございません。)

  • C#でテキストボックスをクリック→フォームが開く→フォームで設定した値

    C#でテキストボックスをクリック→フォームが開く→フォームで設定した値を元のテキストボックスに入力 こんな感じのことをC#でやりたいのですがよくわからないので教えてください。 1. 親をForm1、子をForm2とします 2. Form1のTextBox1をクリックするとForm2が開いきます 3. Form2で設定した値をForm2の「入力」ボタンを押すとForm2が閉じてTextBox1に値が入力されます というものです。 ここで、textBoxは「クリックしたコントロール名を取得してForm2に渡したい」のです。 テキストボックスがたくさんあるので、textBox1とか決まった名前ではありません。 この部分がわからないのです。 ------------------------------------------------------- Form1: private void textBox1_Click(object sender, EventArgs e) {  Form2 fromItem = new Form2(sender);  DialogResult deRet = fromItem.ShowDialog(); } Form2: public Form2(object sender) {  InitializeComponent();  object pSender = sender; } private void button_input_Click(object sender, EventArgs e) {  ((System.Windows.Forms.TextBox)pSender).text = "hoge"; } ------------------------------------------------------- この程度しかわかりません。 正しい方法を教えてください。よろしくお願いいたします。

  • フォーカスがあるテキストボックスに文字を入れる

    GUIでテキストボックスとボタンを作っています。 ボタンをクリックすると、GUIのテキストボックスに書かれた文字がWebブラウザ側にあるテキストボックスへ挿入されるという処理をしたいです。 この処理は、ボタンを押す前にWebブラウザ上のテキストボックスにフォーカスを移し、その後ボタンを押したらフォーカスがある位置に文字を挿入すればできるのではと考えたのですが。。。 フォーカスがある位置に文字を挿入させるやり方がわかりません。 どなたか分かる方教えてください><;

  • エクセルで、任意のテキストボックス等にフォーカスを移したい

    すいません、またまた質問です。 エクセルXPで、ユーザーフォーム上に 複数のテキストボックスやリストボックスを 置いて入力した値が任意のシートのセルに 入力されるというものを作っています。 (しかしながらVBAがほとんど見様見真似レベル なのでかなり悪戦苦闘(~_~*)) そこで、ユーザーフォームにて例えばTEXTBOX1に 入力後、Enterで次のテキストボックス(又は リストボックス)にフォーカスを移したいのですが、 その時に任意のテキストボックス等にフォーカスを 移すことは可能でしょうか。 番号順(なのかな?)に自動でフォーカスを 移動させることはできたのですが、任意の対象へ 移動させるやり方とかってあるのでしょうか。 例えばTEXTBOX1からRISTBOX5へ移すとか。 入力する順番に移動できたらユーザーフォーム上での 入力作業が非常に楽になると思って(^o^;) どうぞよろしくお願いします。

  • テキストボックスやラベルのクリア

    下のように ボタンクリックして、新しくフォーム出て、テキストボックスに入ってた値がフォーム2で表示できますが。 今度はなかの値をクリアしたい場合はどうしたらいいですか。     Dim f As New Form2 f.Owner = Me f.Show() f.Label1.Text = TextBox1.Text f.TextBox1.Text = TextBox1.Text

  • テキストボックスとスクロールバー

     VC++ 2005 Express Edition を使用しています.  テキストボックスへの文字列の(末尾への)追加を下のように行っています. vvv this->textBox1->Text = this->textBox1->Text + "\r\n" + textBox2->Text; ^^^  追加を繰り返してテキストの行数がテキストボックスの高さを越えると右端にスクロールバーが出るのですか,上の方法で追加していくとスクロールバーがテキストボックスの上辺に付いたままで,追加しているテキストを確認できません(スクロールバーの長さは小さくなっているので,文字列が追加されている,ということは分かります).  テキストの行数がテキストボックスの高さ以上になったときに,スクロールバーをテキストボックスの下辺に付ける,ということはできるのでしょうか.