DOBON.NET DOBON.NETプログラミング掲示板過去ログ

タブコントロールの項目へフォーカスを移動する

環境/言語:[Windows2000]
分類:[.NET]

はじめまして。
ちょとvb.NETで行き詰まってます。
タブコントロールを使って3つタブを用意しました。
前のタブのテキストボックスに入力がされていないとき、次のタブのテキストボックス入力前にエラーチェックをし、前のタブのテキストボックスにフォーカスを戻したいのですが、可能でしょうか?。

よろしければお知恵拝借お願いいたします。
■No7240に返信(はっちんさんの記事)
> はじめまして。
> ちょとvb.NETで行き詰まってます。
> タブコントロールを使って3つタブを用意しました。
> 前のタブのテキストボックスに入力がされていないとき、次のタブのテキストボックス入力前にエラーチェックをし、前のタブのテキストボックスにフォーカスを戻したいのですが、可能でしょうか?。
>
> よろしければお知恵拝借お願いいたします。
>

tabcontrol1.selectedindexchangedイベントで、タブ内のテキストボックスの値をチェックしてから、空白ならば元のタブに戻してやればよいと思います。
一度、他のタブを選択時にタブが移動してしまいますが、、、
ぢゅすさん,ありがとうございます

> tabcontrol1.selectedindexchangedイベントで、タブ内のテキストボックスの値をチェックしてから、空白ならば元のタブに戻してやればよいと思います。
> 一度、他のタブを選択時にタブが移動してしまいますが、、、
元のタブに戻してやるというのは、どうするのでしょうか?。
またtabcontrol1.selectedindexchangedイベントで空白チェックを行うと
実行時にいきなりエラーでひっかかってしまいます。
現在タブは名前、生年月日、性別の3つあり、占いボタンクリックで占いを行いたいのですが、その際名前が空白だったらエラー表示をして名前タブの表示に戻したいのです・・・。
■No7251に返信(はっちんさんの記事)
> ぢゅすさん,ありがとうございます
>
はっちんさん こんにちは
多分 ぢゅすさん は次のようにしたら?と 思います。

Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
If Me.TextBox1.Text = "" Then
Me.TabControl1.SelectedTab = Me.TabPage1
End If
End Sub

このようにイベント内で処理をする場合予期せぬトラブルが発生する場合が
ありますので、よく考慮してコードを書いて下さい。
> 前のタブのテキストボックスに入力がされていないとき、次のタブのテキストボックス入力前にエラーチェックをし、前のタブのテキストボックスにフォーカスを戻したいのですが、可能でしょうか?。

 フォーカスを戻すのではなく、エラーであればテキストボックスからフォーカスを移動させないようにするのでは駄目でしょうか?
 それでもよろしければ Validating イベントについて調べてみてください。

DOBON.NET | プログラミング道 | プログラミング掲示板