按钮可以返回变量的值吗?我是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;
}
答案 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; }
}