我正在尝试从标签中删除特定的字符串。标签应该是在输入无效时打印错误消息,一旦用户将文本框输入更改为数字,该特定输入的错误消息就会消失。
这是我到目前为止尝试过的,但是“-=”未能按预期工作。
Sub errorOutput(toggleError As Boolean, courseNumber As Integer)
Dim err(6) As String
err(courseNumber) = "please ensure that what you input in Course " + courseNumber.ToString + " is a number between 0 and 100"
If toggleError = True Then
lblError.Text += err(courseNumber)
Else
lblError.Text -= err(courseNumber)
End If
End Sub
答案 0 :(得分:1)
在应用于两个String
时,+
运算符进行串联。它将运算符右侧的字符串附加到运算符左侧的字符串。
(从技术上讲,它创建一个 new String
对象,该对象表示左手字符串和右手字符串的串联,因为字符串在.NET中是不可变的,但这是一种技术您可能不在乎的细节。)
+=
运算符称为化合物赋值运算符。它将修改值的运算符(在本例中为+
)与赋值运算符(=
)合并在一起,以便您一次即可获得两者。
好的,所以您已经知道它是如何工作的。您正在使用+=
,并且可以追加两个字符串,一切都很好。
因此,以此类推,您尝试-=
。等等...会发生什么? 减去两个字符串是什么意思?减去两个数字,那很有意义。但是,如何减去一个字符串呢?
执行什么操作尚不清楚,因此减法运算符不对String
对象做任何事情。尚未定义,因为其语义不清楚。使用+
运算符(以及&
运算符)仅定义串联。
如果您需要“删除”字符串的一部分,则您将不得不编写更多代码,使用the methods provided by the String
class中的一个或多个来明确说明要执行的操作。例如,您可以使用String.Replace
method将所有出现的一个字符串替换为另一字符串(甚至是空字符串):
Dim message As String = "My favorite color is yellow."
message = message.Replace("yellow", "blue")
但是在这种情况下,您可能只想先清除标签控件,然后仅添加错误消息。本质上就是Ry- suggested in a comment;例如:
Sub errorOutput(toggleError As Boolean, courseNumber As Integer)
lblError.Text = String.Empty
Dim err(6) As String
err(courseNumber) = "please ensure that what you input in Course " + courseNumber.ToString + " is a number between 0 and 100"
If toggleError = True Then
lblError.Text += err(courseNumber)
End If
End Sub
答案 1 :(得分:1)
有些内置的东西可用于验证用户输入。这只是我保存的一些信息。易于使用。
验证 ErrorProvider
Private err As New ErrorProvider()
或从工具箱->设计视图中的组件添加到表单中
.SetError(Control, “Error Message”)
Control.Validating
Private Sub TextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If TextBox1.Text = "" Then
e.Cancel = True
err.SetError(TextBox1, "This text box cannot be blank.")
Else
err.Clear()
End If
End Sub