Как передать параметры нажатию кнопки - PullRequest
0 голосов
/ 26 марта 2019

У меня есть программа, которая задает вопросы, и я хотел бы, чтобы она отслеживала, сколько вопросов пользователь потерпел неудачу, вопросы генерируются одним нажатием кнопки, и я хочу, чтобы она отслеживала, задан ли пользовательвопрос, чтобы он мог пометить их как не отвечающие на него.

Если пользователь нажмет кнопку для создания другого вопроса, он узнает, что на вопрос не было ответа, и увеличит счетчик.В настоящее время выдается сообщение об ошибке

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

Вот код обработчика:

private void NextGasQuestion_Click(object sender, EventArgs e,bool QuestionAnswered,int GasQuestionsFailed)
{
    if (QuestionAnswered == false)
     {
        GasQuestionsFailed++;
     }
}    // Added by edit

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Если вы действительно хотите передать что-либо в событие кнопки, вы можете использовать свойство Tag для кнопки. Вы можете получить доступ к этому внутри обработчика событий, выполнив что-то в этом направлении.

private void button1_Click(object sender, EventArgs e)
{
    var btn = sender as Button;
    if (btn == null) return;

    var yourValue = btn.Tag as YourType;
    if (yourValue != null)
    {
        //Do Stuff
    }
}

Поскольку у других есть состояния, вам, вероятно, следует просто создать переменную в форме и увеличить это значение, вместо того, чтобы поддерживать состояние для самой кнопки.

0 голосов
/ 26 марта 2019

Вы не можете передавать параметры в функцию нажатия кнопки, но можете создать глобальную переменную, которая действительна для нажатия кнопки и других областей:

например:

bool QuestionAnswered  = true;  // it is outside the button click or other functions

void SomeMethod()
{
    QuestionAnswered = false;
}


private void NextGasQuestion_Click(object sender, EventArgs e)
{
    if (!QuestionAnswered)
     {
        GasQuestionsFailed++;
     }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...