как удалить конкретную строку из метки - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь удалить конкретную строку из метки.Предполагается, что на этикетке печатается сообщение об ошибке, в то время как ввод недействителен, как только пользователь изменяет ввод текстового поля на число, сообщение об ошибке должно исчезнуть для этого конкретного ввода.

Вот что я пытался сделать такдалеко, но "- =" не сработало, как я ожидал.

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 голосов
/ 10 февраля 2019

Существует несколько встроенных вещей, которые можно использовать для проверки ввода пользователя.Это всего лишь некоторая информация, которую я сохранил по этому вопросу.Простота использования.

Проверка 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
0 голосов
/ 09 февраля 2019

При применении к двум String с оператор + выполняет объединение .Он добавляет строку в правой части оператора к строке в левой части оператора.

(Технически это создает новый String объект, которыйпредставляет конкатенацию левой и правой строк, поскольку строки являются неизменяемыми в .NET, но это техническая деталь, которая вас, вероятно, не волнует.)

Оператор += упоминаетсякак составной оператор присваивания .Он объединяет оператор, который изменяет значение (в данном случае +) с оператором присваивания (=), так что вы можете получить оба сразу.

Хорошо, так что вы знаете, какэто уже работает.Вы используете +=, и вы можете добавить две строки, и все хорошо.

Итак, по аналогии, вы пытаетесь -=.Подождите ... что должно произойти?Что значит вычесть две строки?Вычитание двух чисел, ну, это имеет смысл.Но как вычесть строку?

Не ясно, какая операция будет выполнена, поэтому оператор вычитания ничего не делает для String объектов.Это не было определено, потому что его семантика не ясна.Определяется только конкатенация с использованием оператора + (а также оператора &).

Если вам нужно «удалить» часть строки, вам придется написать немного больше кода,используя один или несколько методов, предоставляемых String class , чтобы точно указать, какую операцию вы хотите выполнить.Например, вы можете использовать метод String.Replace для замены всех вхождений одной строки другой строкой (или даже пустой строкой):

Dim message As String = "My favorite color is yellow."
message = message.Replace("yellow", "blue")

Но в этом случае вывероятно, просто нужно сначала очистить элемент управления Label, а затем добавить только сообщения об ошибках.По сути, это то, что Ry- предложено в комментарии ;например:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...