Winform返回结果

本文关键字:结果 返回 Winform | 更新日期: 2023-09-27 18:07:14

我想检查winform执行的操作是否成功。

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

窗体关闭后如何返回并检查值?

Winform返回结果

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类按钮上设置一些属性。OK按钮的属性应该设置为enum dialgresult。OK,而Cancel按钮应该将其属性设置为dialgresult。取消

这样,当你的用户按下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}
现在,如上面的示例所示,您可以在using块 中检索UserName属性

注意,围绕创建表单实例调用的using块将确保在右括号处正确地处理表单。

你必须使用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;
}