2017-10-27 1 views
0

このメソッドをより一般的なものにしたいと思います。例外が発生するたびにすべてのTextBoxを手動で入力するのではなく、ルールの例外を受け入れることができます。Me.Controls.OfTypeに例外を作成する方法

このメソッドを使用して、テキストボックスが空であるかどうかを確認します。私は中間の初期と電話番号をオプションにしたいと思いますが、私は正しい結果を得ることができません。

可能であれば、私はパラメータとして例外を渡すことができたいので、これをモジュールに入れることができます。

編集:それは、Windowsアプリケーションブラックウッドさんのコメントパー

Private Function CheckIfEmpty() As Boolean 

    'Checks if All textboxes are empty 

    Dim empty = Me.Controls.OfType(Of TextBox)().Where(Function(txt) txt.Text.Trim.Length = 0) 

    If empty.Any Then 
     'Makes Middle Initial and Phone number optional 
     If txtMiddleInitial.Text.Trim = "" Or txtPhoneNum.Text.Trim = "" Then 
      MsgBoxSetMsg(" Please fill up all fields") 
      CheckIfEmpty = True 
     End If 
    Else 
     CheckIfEmpty = False 
    End If 
End Function 
+1

してください[編集]クエスト'c#'タグを削除してください。また、WindowsアプリケーションまたはWebアプリケーションですか?問題のタグを付けてみてください。ありがとう – Prisoner

+1

TextBoxの 'Tag'プロパティを使用して、それらがオプションかどうかを示すことを検討してください。 'CheckIfEmpty'関数は' Tag'をチェックするだけです。 – Blackwood

+0

@ Blackwoodの提案をさらに進めるには、 'TextBox'を継承する独自のカスタムコントロールを作成し、フィールドが必須かどうかを判断するために使用できる独自の' Boolean'プロパティを追加できます。フォーム上で標準の 'TextBox'の代わりにそのコントロールを使用することができます。既存のフォームに変更を加えることは、デザイナーコードファイルを編集する簡単な作業です。 – jmcilhinney

答えて

0

::それは(「オプション」のための)「O」が含まれている場合には、記入する必要はありません

Private Function CheckIfEmpty(ParamArray exemptions As TextBox()) As Boolean 

    'Checks if All textboxes are empty 

    Dim empty = Me.Controls.OfType(Of TextBox)().Where(Function(txt) txt.Text.Trim.Length = 0 AndAlso Not exceptions.Contains(txt)) 

    If empty.Any Then 
     MsgBoxSetMsg(" Please fill up all fields") 
     CheckIfEmpty = True 
    Else 
     CheckIfEmpty = False 
    End If 
End Function 

あなたはその後、同じようにそれを呼び出すことができますそう:

Dim validated = CheckIfEmpty(txtMiddleInitial, txtPhoneNum) 
+0

このコードは元のコードと同じように 'Me.Controls'を使います。それはモジュールに直接転送されませんが、それはこのスレッドの話題とは別の問題です。 – jmcilhinney

+0

これはまさに私が求めていることです、ありがとうございます。 @jmcilhinneyあなたはそれについて詳述できますか?私は複数のフォームでメソッドを使用しますが、通常はメソッドをコピーして貼り付けます。申し訳ありません、私はVB初心者です。 – johnyrocketfingers12

0
Me.Controls.OfType(Of TextBox)().Where(Function(t) t.Name <> "txtMiddileInitial" AndAlso t.Name <> "txtPhoneNum")  
0

だ、ここ.Tagプロパティをチェックするためのコードです。尋ねて質問に答えるために

Function CheckForm() As String 'returns an error message if form not filled in properly 
    For Each ctl As Control In Me.Controls 
    Dim strTag As String = "" 
    If ctl.Tag IsNot Nothing Then strTag = ctl.Tag.ToString 
    If TypeOf ctl Is TextBox Then 
     Dim txt As TextBox = DirectCast(ctl, TextBox) 
     If txt.Text = "" And Not strTag.Contains("O") Then 
     Return "Please fill in all fields" 
     End If 
    ElseIf TypeOf ctl Is ListBox Then 
     '...etc... 
    End If 
    Next ctl 
    Return "" 'no error 
End Function 
0

はこれを試してみてください:

Private Function CheckIfEmpty(except As TextBox()) As Boolean 

    CheckIfEmpty = _ 
     Me.Controls.OfType(Of TextBox)() _ 
      .Where(Function(txt) Not except.Contains(txt)) _ 
      .Where(Function(txt) txt.Text.Trim.Length = 0) _ 
      .Any() 

    If CheckIfEmpty Then 
     MsgBoxSetMsg(" Please fill up all fields") 
    End If 

End Function 
+0

それでも、このメソッドの免除をハードコーディングしています。質問は、特に彼らが議論として渡されることを尋ねた。 – jmcilhinney

+0

@jmcilhinney - 修正しました。それに乾杯。 – Enigmativity

+0

C#の構文を修正しました。 :-) – jmcilhinney

関連する問題