feor
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору V0lt Сорри, что придираюсь, но событие, а не исключение Код: public class CoolTextBox : TextBox { private const int WM_PASTE = 0x0302; protected override void OnKeyPress(KeyPressEventArgs e) { if (!char.IsNumber(e.KeyChar) && e.KeyChar != (char)22) { e.Handled = true; } base.OnKeyPress(e); } protected override void WndProc(ref Message m) { if (m.Msg == WM_PASTE) { string pastedText = Clipboard.GetText().Substring(0, 8); int password; if (!Int32.TryParse(pastedText, out password)) { return; } } base.WndProc(ref m); } } | Логику реагирования на вставку можно реализовать получше, к примеру, найти в строке цифры и вставить только их. Здесь я просто беру первые 8 символов, и если это не число, то в текстбокс ничего не вставляется. Еще в предыдущем примере условие проверки нажатой клавиши убивало сочетание Ctrl+V. Выделил жирным исправление (на всякий случай, Ctrl+X = (char)24). P.S.: возможно, имеет смысл взглянуть в сторону стандартного контрола MaskedTextBox. | Всего записей: 164 | Зарегистр. 04-09-2005 | Отправлено: 23:23 02-03-2009 | Исправлено: feor, 23:25 02-03-2009 |
|