Есть ли способ указать оператор if-then на основе диапазона значений в TrackBar? (ВБ.NET)

Я хочу использовать TrackBar в своем проекте Visual Studio. Моя цель состоит в том, чтобы пользователь прокручивал индикатор TrackBar, и в зависимости от того, в каком диапазоне значений он находится, он изменит текст метки.

Вот пример того, как я пытался это сделать:

Private Sub ScrollBarProgress() Handles MyBase.Load
        If SelfEvaluationReportBAR.Value = (0) Then
            FeelingLBL.Text = "Please select a value."
        End If
        If SelfEvaluationReportBAR.Value = (1, 25) Then
            FeelingLBL.Text = "I am starting to develop my ability to perform this task."
        End If
        If SelfEvaluationReportBAR.Value = (26, 50) Then
            FeelingLBL.Text = "I feel improvement in my ability to perform this task."
        End If
        If SelfEvaluationReportBAR.Value = (51, 75) Then
            FeelingLBL.Text = "My confidence in my ability to perform this task is substantial."
        End If
        If SelfEvaluationReportBAR.Value = (76, 100) Then
            FeelingLBL.Text = "I feel fully confident in my ability to efficiently and accurately perform the day to day tasks that are assigned to me."
        End If
    End Sub

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

Ошибка BC30452 Оператор «=» не определен для типов «Целое число» и «(Целое число, Целое число)».

Я думаю, что у меня неправильное форматирование. У кого-нибудь есть идеи о том, как диапазон может/должен быть отформатирован?

Вот мои текущие настройки для TrackBar:

Private Sub SelfEvaluationReportBAR_Scroll(sender As Object, e As EventArgs) Handles MyBase.Load
        SelfEvaluationReportBAR.Minimum = 0
        SelfEvaluationReportBAR.Maximum = 100
        SelfEvaluationReportBAR.SmallChange = 1
        SelfEvaluationReportBAR.LargeChange = 5
        SelfEvaluationReportBAR.TickFrequency = 5
    End Sub
End Class

person Community    schedule 06.01.2021    source источник
comment
.Value возвращает целое число, верно? Как это может быть равно диапазону?   -  person TheBlastOne    schedule 06.01.2021
comment
@TheBlastOne Есть ли способ сделать его равным диапазону?   -  person    schedule 06.01.2021
comment
Что не так с ›= AndAlso ‹=?   -  person Steve    schedule 06.01.2021
comment
@ Стив, я новичок в VB.NET, я понятия не имел, что это вообще вариант.   -  person    schedule 06.01.2021
comment
Нет, но вы можете проверить, находится ли X в Range Margin1, Margin2, ... и т. д., проверив, превышает ли X следующий предел. Если X ‹ Margin1, то ... elseIf X ‹ Margin2, то ... и так далее. Просто убедитесь, что Margin1 ‹ Margin2 и т. д.   -  person TheBlastOne    schedule 06.01.2021
comment
@TheBlastOne Спасибо, я попробую.   -  person    schedule 06.01.2021


Ответы (1)


Есть много способов выполнить вашу задачу

Первый

If SelfEvaluationReportBAR.Value >= 1 AndAlso SelfEvaluationReportBAR.Value <= 25) Then
    FeelingLBL.Text = "I am starting to develop my ability to perform this task."
End If

Второй

Select case SelfEvaluationReportBAR.Value
   Case 0
      ....
   Case 1 To 25
      FeelingLBL.Text = "I am starting to develop my ability to perform this task."
   Case 26 To 50
      ...
   ' Other case follow
End Select

В третьих

If Enumerable.Range(1, 25).Contains(c) Then
    FeelingLBL.Text = "I am starting to develop my ability to perform this task."
End If

Это те способы, которые приходят на ум, возможно, есть и другие.

Первые два примера — самые простые подходы, и всего с пятью диапазонами я бы остановился на простом «Если». Третий - просто показать, сколько существует способов, но я действительно не рекомендую создавать перечислимый диапазон только для проверки того, содержится ли число.

person Steve    schedule 06.01.2021
comment
Чтобы этот код работал, подпрограмма должна быть Handles TrackBar.scroll. - person ; 06.01.2021