2013-09-07 6 views
0

Я принимаю пользовательского ввода в текстовое поле, а затем Проверка его следующим образом:Как сравнить функцию Val с «» в VB.NET

Val(txt_score1.text) 

Тогда я должен сравнить его с пустой записью в этом тексте коробка. Например:

If (Val(txt_score1.Text) = "") Then.... 

Я получаю ошибку конвертации. Потому что «" - это String, тогда как Val возвращает Integer.

Как преодолеть это?

+0

Трудно дать вам ответ, который действительно поможет вам, не зная, для чего вы хотите проверить. Что вы пытаетесь проверить там, точно? – Oded

+1

Я думаю, что вы неправильно понимаете цель функции «Val». Поскольку сообщение об ошибке, которое вы получаете, сообщает вам: 'Val' принимает строковый аргумент и пытается преобразовать его в целое число. Он был частью языка BASIC в течение длительного времени. Если бы вы могли точно объяснить, какую проверку вы хотите выполнить в тексте, люди могут помочь больше –

+1

Я думаю, что вы ищете [IsNumeric] (http://msdn.microsoft.com/en-us/library/6cd3f6w1 (v = vs.90) .aspx). – Neolisk

ответ

4

Вы можете использовать Integer.TryParse, чтобы определить, если значение является собственным числом:

Dim x As Integer 
    If Integer.TryParse(TextBox1.Text, x) Then 
     MessageBox.Show(x) 
    Else 
     MessageBox.Show("'" + TextBox1.Text + "' is not a valid number") 
    End If 

Если вам нужно просто проверить на пустую строку, вы можете использовать String.IsNullOrEmpty на сам текст:

If String.IsNullOrEmpty(TextBox1.Text) Then 
     MessageBox.Show("String is empty") 
    End If 

Val - унаследованная функция, оставшаяся от VB6 дней, и имеет какое-то странное поведение, если вы не знаете об этом. Я избегаю этого по этой причине. Например, выполните следующие случаи и генерируемый ими вывод:

MessageBox.Show(Val(""))  '0 
    MessageBox.Show(Val("5"))  '5 
    MessageBox.Show(Val("5e3"))  '5000 
    MessageBox.Show(Val("5xyz")) '5 
Смежные вопросы