我想检查winform
所做的操作是否已成功完成。
MainForm form = new MainForm();
form.Show();
//continue in case the form returns true
如何在winform关闭后返回并检查值?
答案 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;
}