如何将多个文本框放在一个 If else 语句中

时间:2021-03-18 11:46:52

标签: vb.net

这是个问题 =如果 FN 按钮 将被单击,然后它将根据 textbox1 控件的状态显示一条消息。对于 MN 按钮,如果 该事件是单击然后它将显示基于 textbox2 控件的状态的消息。 LN 按钮 单击后,它将根据 textbox3 控件的状态显示一条消息。最后,如果清除 按钮控件将被单击并且任何文本框控件不为空,然后它将清除所有文本框 控件,但如果所有文本框控件都为空,则会显示所有文本框控件为空的消息。

这是我的代码

Public Class Form1

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
        Label1.Text = "First Name"
    End Sub

    Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click
        Label2.Text = "Middle Name"
    End Sub

    Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click
        Label3.Text = "Last Name"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Button1.Text = "FN"
        If TextBox1.Text = vbNullString Then
            MessageBox.Show("The First name is empty")
        Else MessageBox.Show("The First name is " & TextBox1.Text)

        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Button2.Text = "MN"
        If TextBox2.Text = vbNullString Then
            MessageBox.Show("The Middle name is empty")
        Else : MessageBox.Show("The Middle name is " & TextBox2.Text)
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Button3.Text = "LN"
        If TextBox3.Text = vbNullString Then
            MessageBox.Show("The Last name is empty")
        Else : MessageBox.Show("The Last name is " & TextBox3.Text)
        End If
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Button4.Text = "Clear"
        If (TextBox1.Text) And (TextBox2.Text) = vbNullString Then
            MessageBox.Show("Textbox control is empty")
        Else : TextBox1.Clear()
        End If
        For Each txt As Control In Me.Controls.OfType(Of TextBox)()
            txt.Text = ""
        Next
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

    End Sub
End Class

我的问题是,如何处理清除按钮,因为我无法在 Textbox2 和 Textbox3 中执行此操作,谢谢

4 个答案:

答案 0 :(得分:1)

尝试这样的事情

For Each ctrl As Control In Me.Controls
    If TypeOf ctrl Is TextBox Then
        CType(ctrl, TextBox).Text = String.Empty
    End If
Next ctrl

尝试将 Next txt 添加到您的 For Each

答案 1 :(得分:1)

所以,您是在询问 Button4_Click

这是我首先要建议的,因为清除所有文本框(无论它们是否为空)比先检查然后清除要快。

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'    Button4.Text = "Clear"
'   If (TextBox1.Text) And (TextBox2.Text) = vbNullString Then
'       MessageBox.Show("Textbox control is empty")
'    Else : TextBox1.Clear()
'    End If
    For Each txt As Control In Me.Controls.OfType(Of TextBox)()
        txt.Text = ""
    Next
    MessageBox.Show("Textbox controls are empty")
End Sub

但是,如果目的是 a) 只清除所有文本框,如果有人有一些文本,则不显示任何消息。 b) 仅在全部为空时才显示消息。

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  '  Button4.Text = "Clear"

    If (TextBox1.Text = vbNullString) And (TextBox2.Text = vbNullString) And (TextBox3.Text = vbNullString) Then
        MessageBox.Show("Textbox controls are empty")
    Else
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
    End If
    
    or (if this works, VB6 is alien for me)
    
    ....
    Else
        For Each txt As Control In Me.Controls.OfType(Of TextBox)()
            txt.Text = ""
        Next
    End If

End Sub

答案 2 :(得分:0)

我会使用 List(Of TextBox) 允许您利用 AllForEach

Public Class Form1

    Private TBs As New List(Of TextBox)

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        TBs.AddRange({TextBox1, TextBox2, TextBox3})
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        If TBs.All(Function(tb) tb.Text = "") Then
            MessageBox.Show("All TextBoxes are empty!")
        Else
            TBs.ForEach(Sub(tb) tb.Clear())
        End If
    End Sub

End Class

答案 3 :(得分:-1)

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理Button4.Click ' Button4.Text = "清除"

If (TextBox1.Text = vbNullString) And (TextBox2.Text = vbNullString) And (TextBox3.Text = vbNullString) Then
    MessageBox.Show("Textbox controls are empty")
Else
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
End If

谢谢汤姆布伦伯格先生,这段代码对我有用:)

相关问题