如何将参数传递给按钮单击

时间:2019-03-26 19:33:55

标签: c# winforms button parameters

我有一个询问问题的程序,我希望它可以跟踪用户失败了多少个问题,单击按钮就会生成问题,我希望它可以跟踪用户是否被问到了一个问题,以便将其标记为未回答。

如果用户单击该按钮以生成另一个问题,它将知道该问题未得到回答,并增加计数器。当前会显示错误消息

  

“ NextGasQuestion_Click”没有重载匹配委托“ EventHandler”

以下是处理程序代码:

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

2 个答案:

答案 0 :(得分:0)

您不能将参数传递给按钮单击功能,但可以使全局变量在按钮单击和其他作用域中有效:

例如:

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++;
     }
} 

答案 1 :(得分:0)

如果您确实想将某些内容传递给按钮事件,则可以使用按钮上的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
    }
}

当其他人有状态时,您可能应该只在窗体上创建一个变量并增加该值,而不是在按钮自身上保持状态。