CS0123 - нет перегрузки для 'TextChanged' соответствует делегату 'EventHandler' - PullRequest
0 голосов
/ 27 мая 2018

Полное раскрытие: да, это домашняя работа, и да, я пытался исследовать свои проблемы, но до сих пор не понимаю, как это исправить.

Поэтому я пытаюсь разрешить ввод только цифр в текстовое поле.Я сделал это с помощью параметра KeyPressEventArgs.

private void classAinput_TextChanged(object sender, KeyPressEventArgs e)
{
    if (!char.IsDigit(e.KeyChar))
        e.Handled = true;
    else
    {
        invalidFormatError();

    }
    e.Handled = true;
}

Это сработало достаточно хорошо для меня, но я получаю ошибку CS0123, говорящую:

Нет перегрузки для 'classAinput_TextChanged' соответствует делегату 'EventHandler'

внутри кода дизайнера.

Почему это?

// 
// classAinput
// 
this.classAinput.Location = new System.Drawing.Point(67, 51);
this.classAinput.Name = "classAinput";
this.classAinput.Size = new System.Drawing.Size(100, 20);
this.classAinput.TabIndex = 4;
this.classAinput.TextChanged += new System.EventHandler(this.classAinput_TextChanged);
// 

Полная форма 1 Код: https://hastebin.com/husececuri.cs

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Событие TextChanged не принимает KeyPressEventArgs.KeyPress делает, поэтому подпишитесь на это вместо:

this.classAinput.KeyPress += new System.KeyPressEventHandler(this.classAinput_TextChanged);

В качестве альтернативы, вы можете попробовать int.TryParse с событием TextChanged.Реализация может идти примерно так:

private void classAinput_TextChanged(object sender, EventArgs e)
{
    if (!(classAinput.Text == "" || int.TryParse(classAinput.Text, out int _))) {
        invalidFormatError();
    }
}
0 голосов
/ 27 мая 2018

Ваша проблема в том, что вы в настоящее время вводите TextChanged с неверным методом.TextChanged Событие запрашивает типы object и EventArgs в качестве параметров.Поскольку ваша цель - отловить событие нажатия клавиши, удалите текущий метод, добавьте его в форму:

 private void classAinput_KeyPressed(object sender, KeyPressEventArgs e)
 {
    if (!char.IsDigit(e.KeyChar))
        e.Handled = true;
    else
    {
        invalidFormatError();

    }
    e.Handled = true;
 }

И в вашем конструкторе это будет:

this.classAinput.KeyPressed += new System.EventHandler(this.classAinput_KeyPressed);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...