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

C# 关闭对话框和子窗体,并将结果传递给主窗体,c#,winforms,C#,Winforms,我有一个C#windows窗体可以打开一个子窗体,其中有文本框、OK和Cancel按钮 当用户单击“确定”时,我检查与文本框中输入的机器用户的连接。 如果连接正常,我想关闭子窗体,如果不显示是\否消息,询问用户是否仍要使用输入的机器名。 如果答案是“是”,请关闭子窗体,如果不是,请关闭“是\否”问题 在主窗体中,我正在检查子对话框DialogResult,但似乎无法使其工作,因为这样。关闭传递取消结果。以下是主要形式的代码: DialogResult result = SetServer.Sho

我有一个C#windows窗体可以打开一个子窗体,其中有文本框、OK和Cancel按钮

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

在主窗体中,我正在检查子对话框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();
}

改为设置子窗体的结果:

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()

改为设置子窗体的结果:

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()

我在搜索其他内容,无意中发现了这篇文章。虽然已经快一年了,但如果有人来这篇文章,我想补充一点

如果在用户按下
No
时只想关闭
YesNo
对话框,则不需要对
No
选项的代码执行任何操作。默认情况下,无论按下哪个按钮,windows都将关闭
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.

我在找别的东西,无意中发现了这篇文章。虽然已经快一年了,但如果有人来这篇文章,我想补充一点

如果在用户按下
No
时只想关闭
YesNo
对话框,则不需要对
No
选项的代码执行任何操作。默认情况下,无论按下哪个按钮,windows都将关闭
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.

不要在情态形式中使用Close。只需将this.DialogResult属性设置为适当的值。是否尝试使用this.Hide();在关闭表单之前?它将隐藏子窗体,并在关闭前执行任何操作。如果你点击“否”,你就可以看到这个。Show();不要在情态形式中使用Close。只需将this.DialogResult属性设置为适当的值。是否尝试使用this.Hide();在关闭表单之前?它将隐藏子窗体,并在关闭前执行任何操作。如果你点击“否”,你就可以看到这个。Show();