如何从标签中删除特定的字符串

时间:2019-02-09 04:29:32

标签: vb.net winforms

我正在尝试从标签中删除特定的字符串。标签应该是在输入无效时打印错误消息,一旦用户将文本框输入更改为数字,该特定输入的错误消息就会消失。

这是我到目前为止尝试过的,但是“-=”未能按预期工作。

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

2 个答案:

答案 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