Как я могу разрешить только одну десятичную точку в текстовом поле?

Вот код на С#, разрешающий только одну десятичную точку в текстовом поле:

if textbox5.text.contains(".") && e.keychar="."
{
e.handled=true
}

Я должен использовать его в версии VB.NET 2003, но я не могу использовать свойство contains. Как я могу это сделать?


person Community    schedule 05.03.2009    source источник
comment
renu, Пожалуйста, выберите принятый ответ. ;)   -  person Raithlin    schedule 05.03.2009
comment
Рену больше нет :( (или: :-)? )   -  person TheBlastOne    schedule 14.03.2013


Ответы (3)


Как насчет использования метода Text.IndexOf(".") вместо этого? Если он возвращает >=0, то у вас уже есть десятичная точка.

If (textbox5.Text.IndexOf(".") >= 0 And e.KeyChar = ".") Then e.Handled = True
person Raithlin    schedule 05.03.2009

Не забывайте о локали пользователя и числовых форматах. Я считаю, что использование точки ('.') в качестве десятичного символа во всем мире встречается в меньшинстве. Вы можете использовать поле NumberFormat CurrentUICulture, чтобы помочь вам проанализировать наиболее правильным образом. Попробуйте использовать:

decimal d;
bool isValidInput = decimal.TryParse(
    textBox1.Text,
    System.Globalization.NumberStyles.AllowDecimalPoint,
    System.Globalization.CultureInfo.CurrentUICulture.NumberFormat,
    out d);

Это подтвердит правильность ввода числа. Используя другие флаги NumberStyles, вы можете контролировать, какие типы чисел вы хотите разрешить, например такие вещи, как разделители тысяч.

*Извините за C# здесь. Тем не менее, VB.NET должно быть легко адаптироваться к этому; может быть, какая-нибудь добрая душа сможет его отредактировать.

person tenfour    schedule 04.10.2012

person    schedule
comment
Не забудьте добавить комментарии к вашему коду, что он делает, почему и как? - person Yaroslav; 04.10.2012