Winform返回结果

时间:2014-06-08 08:28:05

标签: c# winforms

我想检查winform所做的操作是否已成功完成。

MainForm form = new MainForm();
form.Show();
//continue in case the form returns true

如何在winform关闭后返回并检查值?

2 个答案:

答案 0 :(得分:1)

form.Show()的调用立即返回。在呼叫返回之前,您的用户将无法执行任何操作。如果你想等到用户按下OK或Cancel之类的按钮,你需要调用form.ShowDialog()来阻止你的代码的剩余部分的执行,直到结束表格。

 using(MainForm form = new MainForm())
 {
      DialogResult dr = form.ShowDialog();
      if(dr == DialogResult.OK)
      {
         // User presses OK button, 
         // read the public property UserName and 
         // appply your logic here.
         string userName = form.UserName;

      }
      else if(dr == DialogResult.Cancel)
      {
         // User presses Cancel button
         MessageBox.Show("Login aborted");
      }
}

此代码还需要MainForm类按钮上的一些属性设置。确定按钮的属性DialogResult应设置为枚举DialogResult.OK,而取消按钮的属性设置为DialogResult.Cancel

这样,当您的用户按下OK / Cancel按钮时,您的MainForm将被隐藏(仍未关闭和/或处置),您可以从using块访问MainForm实例的公共属性。

例如,假设OK按钮事件处理程序包含用户名

的登录验证
private void cmdOK_Click(object sender, EventArgs e)
{
    if(.....some kind of authentication method....)
    {
        this.UserName = "Steve";
        ....
    }
}

和MainForm类,一个名为UserName的公共属性

public string UserName {get; private set}

现在,如上例所示,您可以检索使用块

中的UserName属性

请注意,围绕调用表单实例创建的使用块将确保在结束括号中正确处理表单。

答案 1 :(得分:0)

您必须使用DialogResult

MainForm form = new MainForm();
DialogResult result = form.ShowDialog();

if (result == DialogResult.OK)
{
}
else
{
}

您必须设置表单的DialogResult,例如使用按钮Click事件处理程序:

private void Button1_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;
}