создать текстовое поле, которое принимает только числовые значения. Проблема с дизайнерским режимом - PullRequest
0 голосов
/ 01 февраля 2010

У меня есть форма с шестью-семью текстовыми полями.Несколько текстовых полей должны принимать только числовые символы, например, от 0 до 9, десятичный знак и + или -

. Я обработал событие нажатия клавиши текстового поля

private void textBox1_KeyPress (отправитель объекта, KeyPressEventArgs e) {if (! char.IsControl (e.KeyChar)
&&! char.IsDigit (e.KeyChar)
&& e.KeyChar! = '.') {e.Handled = true;}

}

Теперь я должен написать один и тот же код для всех текстовых полей, которые я чувствовал излишним.Я создал новый класс MyTextBox, производный от TextBox, и добавил в него приведенный выше код.

В режиме конструктора я перетаскиваю элемент управления textbox. Перейдите в файл Designer.cs и измените строку на

private MyTextbox m_txtName = new MytextBox ();

Теперь проблема в том, что если я добавлю новую кнопку или какой-либо элемент управления для создания файла designer.cs, то он будет изменен / обновлен ... и строка aboe изменится на обычный TextBox, и я должен идтизаменять это каждый раз ... могу ли я этого избежать?

Примечание: я не хочу использовать элемент управления MasktextBox или numericKeydown.

Ответы [ 3 ]

1 голос
/ 01 февраля 2010

Отличный пример вы найдете здесь .

Как насчет дизайнера. Когда вы перестроите свой проект, вы увидите (должны) видеть текстовое поле в качестве пользовательского компонента на панели инструментов. Перетащите этот компонент вместо ваших древних текстовых полей.

Если нет, вам нужно найти все ссылки на ваш MyTextBox1, потому что вам нужно изменить его как минимум в 2 местах: объявление и создание (MyTextBox mtb; и mtb = new MyTextBox();)

1 голос
/ 01 февраля 2010

Вы можете добавить свой собственный элемент управления на панель инструментов и добавить его в конструктор форм.

0 голосов
/ 20 сентября 2016

с событием KeyPress

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
   int isNumber = 0;
   e.Handled = !int.TryParse(e.KeyChar != (char)Keys.Back ? e.KeyChar.ToString() : "0", out isNumber);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...