2013-07-25 2 views
6

いくつかのテキストボックスとマスクされたtexboxをwinformに用意しています。私はそれらが空であるか、nullであるか、何も調べる必要はありません。マスクされたテキストボックスが空であるかどうかを確認するには?

空のテクスチャボックスがある場合、テキストボックスが空でサブが終了するというメッセージが表示されますが、何らかの理由でそれをチェックしていないというメッセージが表示されます。マスクされたテキストボックス。

多分私は間違っていて、それをチェックしているかもしれませんが、マスクを持っているので、空でもnullでもないと考えられます。

マスクされたテクスチャボックスが空であるかどうかを確認するお手伝いをしていただければ幸いです。

これはコードです:

Private Sub btnCargarInformacion_Click(sender As System.Object, e As System.EventArgs) Handles btnCargar.Click 
    For Each myControl As Control In Me.GroupBox1.Controls 
     If TypeOf (myControl) Is TextBox Then 
      If myControl.Text.Equals(String.Empty) Then 
       MessageBox.Show(String.Format("Please Fill the following Textboxes: {0}", String.Join(",", myControl.Name))) 
      End If 
      If myControl.Text.Equals(String.Empty) Then 
       Exit Sub 
      End If 
     End If 
    Next 
    Dim PartePersonalTableApt As New PersonalObraDataSetTableAdapters.PartePersonalTableAdapter 
    Dim PersonalObTableApt As New PersonalObraDataSetTableAdapters.PersonalObTableAdapter 
    PartePersonalTableApt.ClearBeforeFill = True 
    PartePersonalTableApt.FillByFecha(PersonalObraDataSet.PartePersonal, txtDate.Text, txtDepartamento.Text, txtTurno.Text) 
    PersonalObTableApt.ClearBeforeFill = True 
    PersonalObTableApt.Fillby(PersonalObraDataSet.PersonalOb) 
End Sub 

答えて

3
if textbox.MaskCompleted=True Then 
    'they entered something 
else 
    ' they didnt enter anything 

Endif 
2

問題は、あなただけのこの行のTextBoxオブジェクトを探しているということです。

If TypeOf (myControl) Is TextBox Then 

MaskedTextBox制御がTextBoxクラスから継承していないので、次のようにそのタイプを別々に確認する必要があります:

If (TypeOf (myControl) Is TextBox) Or (TypeOf (myControl) Is MaskedTextBox) Then 

しかし、彼らは両方のTextBoxBaseクラスから継承しないので、あなただけの代わりに、それをチェックできます。

If TypeOf myControl Is MaskedTextBox Then 
     If CType(myControl, MaskedTextBox).Text.Equals(String.Empty) Then 
      MessageBox.Show(String.Format("Please Fill the following Textboxes: {0}", String.Join(",", myControl.Name))) 
     End If 
     If CType(myControl, MaskedTextBox).Text.Equals(String.Empty) Then 
      Exit Sub 
     End If 
End If 
+0

私はtexboxbaseするためにそれを変更しましたが、それはまだmaskedtexboxを無視します。 – David

1

はこれを試してみてくださいこれは、MaskedTextBoxのMaskプロパティに対して行われます。

If myControl.Text.Equals(myControl.Mask) Then 
    MessageBox.Show(String.Format("Please Fill the following Textboxes: {0}", String.Join(",", myControl.Name))) 
End If 
+0

ランダムボックスをチェックするのではなく、チェックがタブ順序に従うようにする方法はありますか?メッセージボックスに.Nameプロパティの代わりに説明を表示する方法もありますか?たとえば、txtShiftの代わりにShiftを表示します。ありがとうございます – David

+0

申し訳ありませんが、私は...コントロールのインデックス番号は、フォームに追加された順序は、ループがおそらくこの順序に従うが、私は100%ではないその –

+0

私はあなたの2番目の質問についても分かりません。あなたのコントロールの名前がtxtShiftなら、あなたは明らかに "txt"を取り除く方法を理解する必要があります。おそらくあなたはその最初の大文字で何とか作業することができます。それを達成するためのよりよい方法があるかもしれません。ちょっとした考え方 –

1
未テスト

代わりstring.emptyに対するチェックの、あなたがチェックすることができ:

If TypeOf (myControl) Is TextBoxBase Then 
関連する問題