проблема фильтрации текстового поля в приложении Windows - PullRequest
0 голосов
/ 20 июля 2010

Мое требование: я хочу ввести десятичное значение в мое текстовое поле. В случае, если пользователь ввел .dot, он должен ввести 3 десятичных значения, в противном случае он не должен оставлять текстовое поле. Если пользователь не введен.Позволяет ввести любое число без цифр, как ограничить это в текстовом поле .net winforms.

десятичное ((1-9), 3)

Перед десятичным знаком это может быть любое десятичное значение, например

True case

123 --- 1232.004 --- 123123123123.555 --- 3123123123 --- .231 ---

Ложный случай

123.--- 222.33 --- 123.3 --- 21312323.1232133 --- .2 --- .12313 ---

Ответы [ 3 ]

2 голосов
/ 20 июля 2010

Подписаться на TextBox Проверка событие:

private void TextBox_Validating(object sender, CancelEventArgs e)
{
    string Text = ((TextBox)sender).Text;        
    string[] Parts = Text.Split(new char[] { '.' });
    decimal Dummy;
    e.Cancel = !decimal.TryParse(Text, out Dummy) || 
        ((Parts.Length == 2) && (Parts[1].Length != 3));
}

Или вы можете использовать Регулярные выражения для проверки текста или что-то еще. Но основная идея здесь в том, что если вы отменяете проверку в текстовом поле, то пользователь не может оставить ее по умолчанию. Проверьте также AutoValidate свойство.

1 голос
/ 20 июля 2010

Просто обработайте событие Validating и проверьте наличие ., если вы обнаружите что-либо, убедитесь, что за ним следуют 3 цифры.

Просто используйте IndexOf, чтобы найти точки, убедитесь, что строка содержит не менее 3 символов после этого индекса, а затем извлеките следующие 3 символа и убедитесь, что они все цифры.

0 голосов
/ 22 июля 2010

Или разбить запись на два текстовых поля, одно для цифр перед точкой, второе для трех цифр после точки.

Вроде как ввод SSN с 3 текстовыми полями.

...