投稿者   () 投稿日時 2008/8/12 18:54:00
    Private Sub TabPage1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TabPage1.Validating 
        '▼Formを閉じるときにはイベントが発生しないようにする 
        If ActiveControl.CausesValidation = False Then 
            Exit Sub 
        End If 
 
        '▼TabPage1の全てのコントロールに対し、入力チェック 
        For Each t As TextBox In TabPage1.Controls 
            If 自作メソッド(t.Text) = False Then 
 
                t.Focus() 
                t.SelectAll() 
                Exit Sub 
            End If 
        Next 
    End Sub 
 
    '■自作メソッド 
    ''' <summary>指定した値が正しいかチェックする</summary> 
    ''' <param name="Expression">チェックしたい文字列型の値</param> 
    ''' <returns>正しければTrueを返し、エラーならメッセージを表示してFalseを返す</returns> 
    Private Function 自作メソッド(ByVal Expression As String) As Boolean 
 
        Dim reg As New System.Text.RegularExpressions.Regex("^\d{1,3}$") 
 
        If Not reg.IsMatch(Expression) Then 
            MsgBox("error", vbCritical, "入力エラー") 
            TabControl1.SelectedIndex = 0 
            Return False 
        End If 
 
        If CInt(Expression) > 300 Then 
            MsgBox("300over", vbCritical, "入力エラー") 
            TabControl1.SelectedIndex = 0 
            Return False 
        End If 
 
        Return True 
    End Function 
 
入力チェックならエラーのときはテキストを初期化する 
より、全て選択したほうが親切かと思い、SelectAllを 
使用しています。 
 
また、このコードだとFocusのところでValidatingイベントが 
発生してしまい、メッセージが2回表示されてしまいます。 
他に方法はないものでしょうか・・・・・ 
他の方のフォローに期待します^^;