Проверка TextBox в Windows Forms - PullRequest
0 голосов
/ 20 июня 2011

У меня есть некоторый код, предназначенный для проверки TextBox на наличие определенных символов, хотя по какой-то причине у меня возникают проблемы с «KeyChar» и «Handled» частью кода:

private void textBox5_Validating(object sender, CancelEventArgs e)
{
    string allowedCharacterSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.\b\n";

    if (allowedCharacterSet.Contains(e.KeyChar.ToString()))
    {
        if (e.KeyChar.ToString() == "."
            && textBox5.Text.Contains("."))
        {
            e.Handled = true;
        }
    }
    else
    {
        e.Handled = true;
    }

}

.............

Error   2   'System.ComponentModel.CancelEventArgs' does not contain a definition for 'KeyChar' and no extension method 'KeyChar' accepting a first argument of type 'System.ComponentModel.CancelEventArgs' could be found (are you missing a using directive or an assembly reference?)   D:\test\Form1.cs    602 48  App

Ответы [ 4 ]

2 голосов
/ 20 июня 2011

Как говорится в сообщении об ошибке, в CancelEventArgs.

отсутствует свойство KeyChar. Либо необходимо переключиться на KeyPress Событие (котороеимеет свойство KeyChar в своих аргументах события) текстового поля или рассматривает строку как целое (а не один символ за раз) в Validating Событие

0 голосов
/ 20 июня 2011

А как насчет использования регулярных выражений?

private void TextBox5_Validating(object sender, System.EventArgs e)
{
    String AllowedChars = @"^a-zA-Z0-9.$";
    if(Regex.IsMatch(TextBox5.Text, AllowedChars))
    {
         e.Handled = true;
    }
    else
    {
         e.Handled = false;
    }
}

Или что-то в этом роде ....

0 голосов
/ 20 июня 2011

Попробуйте вместо этого KeyPress событие.Это позволяет запретить пользователям вводить ненужные буквы (установив e.Handled = true).Вы по-прежнему хотите использовать проверку, чтобы убедиться, что они не вставили в буфер обмена неверные данные.

0 голосов
/ 20 июня 2011

Попробуйте использовать KeyPressEventArgs e вместо CancelEventArgs e

http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...