关闭对话框和子窗体并将结果传递给主窗体

时间:2017-11-21 15:36:52

标签: c# winforms

我有C#窗体打开子窗体,在其中我有文本框,确定和取消按钮,

当用户单击“确定”时,我会检查与文本框中输入的机器用户的连接 如果连接正常我想关闭子表单,如果没有显示是\没有询问用户是否仍想使用输入的机器名称的消息。
如果答案为是,则关闭子表单,如果不是只关闭是\否问题。

在主窗体中,我正在检查子对话框DialogResult,但似乎无法使其工作,因此。关闭传递取消结果。以下是主要表单中的代码:

DialogResult result = SetServer.ShowDialog();
if (result == DialogResult.OK)
{
    // BLA
}

儿童表格代码

if (!PingMachine(testmachine))
{
    DialogResult dialogResult = MessageBox.Show(“No connection", "Check", 
    MessageBoxButtons.YesNo);
    if (dialogResult == DialogResult.Yes)
    {
        btnOK.DialogResult = DialogResult.OK;
    }
    else
    {
        btnOK.DialogResult = DialogResult.No;
    }
    this.Close();
}

2 个答案:

答案 0 :(得分:8)

改为设置子表单的结果:

DialogResult dialogResult = MessageBox.Show(“No connection", "Check", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes) {
  this.DialogResult = DialogResult.OK;
}
else {
  this.DialogResult = DialogResult.No;
}

设置模态表单的DialogResult也会自动关闭它,因此无需调用this.Close();

答案 1 :(得分:0)

我在搜索其他内容,却迷失了这篇文章。即使已经快一岁了,如果有其他人来此帖子,我想添加一些内容。

如果在用户按下YesNo时只想关闭No对话框,那么对于No选项的代码绝对不需要做任何事情。默认情况下,无论按下哪个按钮,窗口都会关闭YesNo对话框,您只需要对每个按钮被按下时想要执行的操作进行强制修改即可,但是如果您根本不想执行任何操作,只需完全不写任何东西。

if (dialogResult == DialogResult.Yes)
{ 
    this.DialogResult = DialogResult.OK; 
} 
// End your code here. If user press "No", then the question will automatically close with no actions being executed.