投稿者 るしぇ  () 投稿日時 2008/8/12 21:18:00
Private Sub TabPage_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) _ 
                Handles TabPage1.Validating, TabPage2.Validating 
  ''※注 Validating イベントをキャンセルするので下のコードでは対応できない 
  ''▼Formを閉じるときにはイベントが発生しないようにする  
  'If ActiveControl.CausesValidation = False Then 
  '  Exit Sub 
  'End If 
 
  Dim targetTab As TabPage 
  targetTab = DirectCast(sender, TabPage) 
 
  '▼検証中の TabPage の全てのコントロールに対し、TextBox であれば入力チェック 
  For Each t As Control In targetTab.Controls 
    If TypeOf t Is TextBox AndAlso 自作メソッド(t.Text) = False Then 
      e.Cancel = True 
      't.Focus() 
      DirectCast(t, TextBox).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