使用 ListView 进行文本验证
Text Validation with ListView
我目前正在尝试弄清楚如何在列表视图插入方面验证我的文本框。文本框在下面声明为字符串。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Col1 As String = TextBox1.Text
Dim Col2 As String = TextBox2.Text
Dim col3 As String = TextBox3.Text
Dim col4 As String = RichTextBox2.Text
Dim col5 As String = DateTimePicker1.Text
Dim col6 As String = DateTimePicker2.Text
Dim col7 As String = RichTextBox2.Text
If Col1 Or Col2 Or col3 Or col4 Or col5 Or col6 Or col7 = "" Then
MessageBox.Show("Please fill in any missing field. Remember and select a date in both date fields!")
Exit Sub
Else
Dim lvi As New ListViewItem
lvi.Text = Col1 'Adds to First column
lvi.SubItems.Add(Col2)
lvi.SubItems.Add(col3)
lvi.SubItems.Add(col4)
lvi.SubItems.Add(col5)
lvi.SubItems.Add(col6)
lvi.SubItems.Add(col7) 'Adds to Second column
ListView1.Items.Add(lvi)
End If
End Sub
它只是从字符串(文本框)中获取数据并将它们按列表视图的顺序排列table。我依赖于其中包含某种数据的每个文本框。如果缺少一个字段,table 中的每一列都会向左移动,如果你明白我的话?有没有一种可能的方法来验证然后提出条件。我试过做一个,但我对 VB 没有太广泛的了解,所以我觉得它行不通。
您的代码有很多 问题。您应该做的第一件事是将 Option Strict 编译器选项设置为 On
。 (阅读"To set Option Strict in the IDE"部分)
VS 将突出显示 Col1
和 Col2
,并显示以下错误消息:
Option Strict On disallows implicit conversions from 'String' to 'Long'
此时您应该转到 MSDN 并查看 Or Operator.
的文档
<Boolean> result = <Boolean> expression1 Or <Boolean> expression2
如您所见,LHS 和 RHS 参数都需要是布尔值。
Dim result As Boolean = (Col1 = "") Or (Col2 = "")
所以你需要为每个表达式重复这个。
If Col1 = "" Or Col2 = "" Or col3 = "" Or col4 = "" Or col5 = "" Or col6 = "" Or col7 = "" Then
另一种选择是将控件存储在数组中并使用 Any 扩展方法。
Dim controls As Control() = {
TextBox1,
TextBox2,
TextBox3,
RichTextBox2,
DateTimePicker1,
DateTimePicker2,
RichTextBox2
}
If (controls.Any(Function(c As Control) c.Text = "")) Then
'Display error message
此外,请注意 validate user input in winforms is to handle the Validating and Validated 事件的常用方法。
我目前正在尝试弄清楚如何在列表视图插入方面验证我的文本框。文本框在下面声明为字符串。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Col1 As String = TextBox1.Text
Dim Col2 As String = TextBox2.Text
Dim col3 As String = TextBox3.Text
Dim col4 As String = RichTextBox2.Text
Dim col5 As String = DateTimePicker1.Text
Dim col6 As String = DateTimePicker2.Text
Dim col7 As String = RichTextBox2.Text
If Col1 Or Col2 Or col3 Or col4 Or col5 Or col6 Or col7 = "" Then
MessageBox.Show("Please fill in any missing field. Remember and select a date in both date fields!")
Exit Sub
Else
Dim lvi As New ListViewItem
lvi.Text = Col1 'Adds to First column
lvi.SubItems.Add(Col2)
lvi.SubItems.Add(col3)
lvi.SubItems.Add(col4)
lvi.SubItems.Add(col5)
lvi.SubItems.Add(col6)
lvi.SubItems.Add(col7) 'Adds to Second column
ListView1.Items.Add(lvi)
End If
End Sub
它只是从字符串(文本框)中获取数据并将它们按列表视图的顺序排列table。我依赖于其中包含某种数据的每个文本框。如果缺少一个字段,table 中的每一列都会向左移动,如果你明白我的话?有没有一种可能的方法来验证然后提出条件。我试过做一个,但我对 VB 没有太广泛的了解,所以我觉得它行不通。
您的代码有很多 问题。您应该做的第一件事是将 Option Strict 编译器选项设置为 On
。 (阅读"To set Option Strict in the IDE"部分)
VS 将突出显示 Col1
和 Col2
,并显示以下错误消息:
Option Strict On disallows implicit conversions from 'String' to 'Long'
此时您应该转到 MSDN 并查看 Or Operator.
的文档<Boolean> result = <Boolean> expression1 Or <Boolean> expression2
如您所见,LHS 和 RHS 参数都需要是布尔值。
Dim result As Boolean = (Col1 = "") Or (Col2 = "")
所以你需要为每个表达式重复这个。
If Col1 = "" Or Col2 = "" Or col3 = "" Or col4 = "" Or col5 = "" Or col6 = "" Or col7 = "" Then
另一种选择是将控件存储在数组中并使用 Any 扩展方法。
Dim controls As Control() = {
TextBox1,
TextBox2,
TextBox3,
RichTextBox2,
DateTimePicker1,
DateTimePicker2,
RichTextBox2
}
If (controls.Any(Function(c As Control) c.Text = "")) Then
'Display error message
此外,请注意 validate user input in winforms is to handle the Validating and Validated 事件的常用方法。