返回变量字符串值的按钮

时间:2019-03-28 07:21:34

标签: c# winforms

按钮可以返回变量的值吗?我是winform的新手,所以...了解我。最终目标是有一个带有两个按钮的简单代码,如果单击它们,将返回带有var值的msgbox。

private string button3_Click(object sender, EventArgs e)
{
  string res = "PASS";
  MessageBox.Show(res);
  return res;
}

private string button4_Click(object sender, EventArgs e)
{
  string res = "FAIL";
  MessageBox.Show(res);
  return res;

}

2 个答案:

答案 0 :(得分:1)

嗯,button3_Click之类的就是所谓的回调函数,它们由 system 调用,这就是为什么不返回任何值的原因(系统不会不需要它)。让我们提取一种方法

private string MyButtonClick(object sender) {
  string result = "";

  if (sender == button3) 
    result = "PASS"; //TODO: better read it from resources, not hadcoded
  else if (sender == button4) 
    result = "FAIL"; //TODO: better read it from resources, not hadcoded

  if (!string.IsNullOrEmpty(result))
    MessageBox.Show(result); 

  return result;     
}

然后您可以输入:

// System callback function

// void: System callback function signature
private void button3_Click(object sender, EventArgs e) {
  MyButtonClick(sender);  
}

// void: System callback function signature
private void button4_Click(object sender, EventArgs e) {
  MyButtonClick(sender);  
} 

// custom code

string myClickMessage = MyButtonClick(button4);

答案 1 :(得分:0)

点击事件处理程序具有强类型签名,即返回类型必须void,因此您不能从中返回任何内容。

但是,如果您使用的是Windows Forms,则可以使用窗体的类,并在其中放置这些事件框。因此,您可以做的是:定义私有变量:

pirvate string _res;

,然后在您的点击事件事件处理程序中为其分配值,例如:

private string button3_Click(object sender, EventArgs e)
{
  _res = "PASS";
  MessageBox.Show(_res);
}

然后在代码中,您可以根据需要使用此值。

如果要在课外使用它,请定义属性:

public string Res
{
  get { return _res; }
}