2009-03-13 2 views
1

Мне нужно проверить символы, введенные пользователем в MaskedTextBox. Какие символы действительны, зависит от уже введенных. Я пробовал использовать IsInputChar и OnKeyPress, но верну ли я false в IsInputChar или установил e.Handled в true в OnKeyPress, текст в поле по-прежнему установлен на недопустимое значение.Как предотвратить изменение нажатия клавиши MaskedTextBox?

Как предотвратить изменение нажатия клавиши MaskedTextBox?

UPDATE: MaskedTextBox не TextBox. Я не думаю, что это должно измениться, но из числа людей, которые говорят мне, что e.Handled должен работать, возможно, так и есть.

ответ

4

Это не будет вводить символ 'x' в текстовое поле1.

char mychar='x'; // your particular character 
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == mychar) 
      e.Handled = true; 
    } 

EDIT: Это работает для MaskedTextBox, а также.

НТН

+0

Это то, что я делаю. Возможно, он не работает, потому что это MaskedTextBox? – Simon

+0

Он также работает для MaskedTextBox. изм. – NileshChauhan

+0

Сообщение ur code dude .. :) – NileshChauhan

0

KeyPress должен сделать это; вы делаете это по форме? или при контроле? Например:

static void Main() { 
    TextBox tb = new TextBox(); 
    tb.KeyPress += (s, a) => 
    { 
     string txt = tb.Text; 
     if (char.IsLetterOrDigit(a.KeyChar) 
      && txt.Length > 0 && 
      a.KeyChar <= txt[txt.Length-1]) 
     { 
      a.Handled = true; 
     } 
    }; 
    Form form = new Form(); 
    form.Controls.Add(tb); 
    Application.Run(form); 
} 

(только позволяет «восходящие» символов)

Обратите внимание, что это не защитит вас от копирования/вставки - вы, возможно, придется смотреть на TextChanged и/или Подтвердить, а также.

+0

Я делаю это под контролем. – Simon