投稿者 らるきー  () 投稿日時 2008/8/11 21:11:00
>>1 鍵さん 
お返事ありがとうございます! 
VB2005を使用しています。 
 
変な日本語で申し訳なかったですが、アドバイス頂いた様にしてみるとできました↓ 
サンプルプログラムとして、タブページ2つに、各タブページの中にTextBoxが2つずつある画面で 
 
 Dim i, p, x, y As Integer 
 
 Private Sub TabPage1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Leave 
 
         
    '正規表現で入力された値を判断する。 
    If Regex.IsMatch(TextBox1.Text, "^[0-9]{1,3}$") Then 
            i = Val(TextBox1.Text) 
            i = Convert.ToInt32(i) 
        Else 
            MsgBox("textbox1 error", vbCritical, "入力エラー") 
            TextBox1.Clear() 
 
            Exit Sub 
        End If 
        Me.TextBox1.Focus() 
 
        If i > 300 Then 
            MsgBox("300overr", vbCritical, "入力エラー") 
            TextBox1.Clear() 
            Exit Sub 
        End If 
        Me.TextBox1.Focus() 
    End Sub 
 
これでtabpage1のTextBox1に入力された数値を、TabPage1以外のTabPageに移ろうとしたときに、 
判断できるようになりましたが。。 
 
>たとえば、[OK]ボタンがクリックされたときにまだ必要な項目、たとえばメールアドレスが入力されていなかったとします。 
>この場合にただ単に「メールアドレスを入力してください。」という警告のメッセージを表示するだけではなく、 
>そのメッセージとともに自動的にメールアドレス欄がフォーカス状態になるならば、 
>それは親切なアプリケーションと言えます。 
 
とこちらのサイトでも仰られている様に、エラーがあった箇所にフォーカスを戻したいのですが 
↑のプログラムではTabPage1以外に移った場合、そのTabPageのTextBoxにフォーカスが移ってしまいます。。 
何とかTabPage1に戻って、エラーのあるTextBoxにフォーカスを戻す方法はないでしょうか? 
 
それともう1つなのですが、↑のプログラムはTabPage1のTextBox1の処理なのですが 
もう1つTextBox2にも同じ処理をさせたいので、コピーすれば早いのですが。。 
そうはせずに、処理を纏めて、プロシージャに呼び出す?方法があると聞きました。 
 
なにぶん初心者でよくわかっていないのですが、そちらの方法もご教授いただければと思います。 
長々と本当にすみません!