2016-10-19 3 views
0

noob вопрос здесь. Я пытаюсь написать программу, чтобы, когда кто-то оставил клики на ярлыке, значение в текстовом поле увеличивается на 1. Когда они нажимают на него правой кнопкой, значение уменьшается на 1. Все это работает, за исключением того, Не хочу, чтобы ценность когда-либо могла стать отрицательным числом. Я пытался остановить его, и он работает, когда положительное значение уже находится в текстовом поле. НО, если вы щелкните правой кнопкой мыши на ярлыке перед тем, как вы нажмете его (до того, как какое-либо значение будет в текстовом поле), оно все равно станет «-1», а затем остановится. Вот код, я использую:Как запретить текстовое поле иметь отрицательное значение? (Visual Basic)

Private Sub Label5_MouseClick(sender As Object, e As MouseEventArgs) Handles Label5.MouseClick 

    If e.Button = MouseButtons.Left Then 
     SawWhetOwl.Text = (Val(SawWhetOwl.Text) + 1).ToString() 
     Label5.Text = SawWhetOwl.Text 
    ElseIf e.Button = MouseButtons.Right Then 
     If SawWhetOwl.Text = CInt(SawWhetOwl.Text < 0) Then 
      Exit Sub 
     Else 
      SawWhetOwl.Text = (Val(SawWhetOwl.Text) - 1).ToString() 
      Label5.Text = SawWhetOwl.Text 
     End If 
    End If 
End Sub 

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

+0

Вы можете использовать NumericUpDown, если значение или диапазон важно – Plutonix

+0

Как бы я применяю, что в коде, который я отправил? Я - абсолютный новичок в программировании, поэтому я действительно не знаю, что это такое. – onemillionwords17

+0

Они находятся в панели управления - вместо текстового поля (для текста) используйте 'NumericUpDown' для сбора номера. Он имеет свойства Min, Max и Decimal, чтобы позволить вам то, что вы хотите – Plutonix

ответ

0

Возможно, вам потребуется проверить, что текст не пуст для уменьшения количества.

Private Sub Label5_MouseClick(sender As Object, e As MouseEventArgs) Handles Label5.MouseClick 

    If e.Button = MouseButtons.Left Then 
     SawWhetOwl.Text = (Val(SawWhetOwl.Text) + 1).ToString() 
     Label5.Text = SawWhetOwl.Text 
    ElseIf e.Button = MouseButtons.Right Then 
     If String.IsNullOrEmpty(SawWhetOwl.Text) OrElse CInt(SawWhetOwl.Text) <= 0 Then 
      Exit Sub 
     Else 
      SawWhetOwl.Text = (Val(SawWhetOwl.Text) - 1).ToString() 
      Label5.Text = SawWhetOwl.Text 
     End If 
    End If 
End Sub 
+0

визуальная студия ставит красную линию под «IsNullOrEmpty», говорит, что она не объявлена ​​?? – onemillionwords17

+0

Ну ладно ... это должен быть String.IsNullOrEmpty. Обновлено сообщение. –

+0

Кажется, что это должно сработать, но когда я запустил его и щелкнул правой кнопкой, он сбрасывается, а затем указывает на «If SawWhetOwl.Text = CInt (SawWhetOwl.Text <0) OrElse String.IsNullOrEmpty (SawWhetOwl.Text) Затем« строка , и говорит, что «Необработанное исключение типа« System.InvalidCastException »произошло в Microsoft.VisualBasic.dll Дополнительная информация: Преобразование из строки« »в тип« Двойной »недопустимо». – onemillionwords17

Смежные вопросы