2010-09-20 2 views
0

В настоящий момент моя программа вылетает, если внутри текстового поля существует только одна цифра. Например. Пользователь помещает «6» в текстовое поле «День» (которое должно быть двухзначным числом), и программа выйдет из строя, когда он нажмет кнопку «Конвертировать». Это должно быть две цифры, иначе программа выйдет из строя ...C# как проверить, имеет ли текстовое поле одну цифру?

Мое приложение - это временный преобразователь, кстати.

заранее спасибо :)

+2

Textbox в Windows, или W ЕВ? – balexandre

+0

Почему две цифры? –

ответ

0

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

0

Это то, что мы называем ВАЛИДАЦИИ и это очень важный материал.

Вы никогда не должны писать код, который предполагает что-либо вообще, сначала проверьте его!

, например:

if(myTextBox.Text.Length > 1) { 

    // continue the process 

} else { 

    MsgBox.Show("Can you please do things right for once?"); 
} 

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

скажите нам, если это окна или сети, и мы поможем вам в части проверки.

+0

Эти инструкции не работают:/мой основной код: Строка dateString = yyyy.Text + dd.Text + MM.Text + hh.Text + M.Text + ss.Text; DateTime timestamp = DateTime.ParseExact (dateString, "yyyyddMMhhmmss", CultureInfo.CurrentCulture); long ticks = timestamp.Ticks; длинные микросекунды = тики/10; convertText.Text = microseconds.ToString ("X"); – Mark

+0

также, другое: если пользователь ставит число, превышающее 31, программа также выйдет из строя. Как я должен это делать? например .... if (dd.Text.Length <= 1 || dd.Text> 31) return; – Mark

+0

Отметьте, почему бы вам просто не добавить поле datetime, например, jQuery UI? http://jqueryui.com/demos/datepicker/ он проверяет вас, и все, что вам нужно, это взять строку – balexandre

1

Если вы хотите разобрать даты, вы можете использовать DateTime.TryParse. Вот несколько других подходов:

  • Проверьте длину каждого текстового поля (не культуры дружественных)
  • Override текстовое поле и создать свой собственный суб-класс, который переопределяет On Key Pressed -Event, так что вы можете решить, что вы хотите разрешить или нет.
4

Это должно быть две цифры или иначе программа разбивает

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

Нет причин, по которым ввод одной цифры вместо двух должен приводить к ошибке.

+2

Это должен быть комментарий, как это помогло ему решить проблему? –

+1

@Filip: Я не согласен. Это не комментарий, это (единственный!) Правильный подход для решения этой проблемы. Я очень сильно чувствую плохой UX, потому что я ежедневно сталкиваюсь с этим. –

0

Если вы говорите о WinForms, то вы можете просто проверить против textBox.Text.Length

if(textBox1.Text.Length <= 1) 
{ 
    // handle error 
} 
1

Вы проверить это следующим образом:

if (TheDayTextbox.Text.Length != 2) { 
    // illegal length 
} 

Конечно, вы можете это исправить, если это короче:

string day = TheDayTextbox.Text; 
if (day.Length == 1) { 
    day = "0" + day; 
} 
0
int res = -1; 

    if(textBox.Text.Length == 2) { 
     Int32.tryParse(textBox.Text, res) 
    } 


    if(res > 0) { 
    // convert 
    } 
Смежные вопросы