C# 从主窗体打开新窗体后,如何在出错后保留此窗体

C# 从主窗体打开新窗体后,如何在出错后保留此窗体,c#,winforms,C#,Winforms,我有申请表,从主表中打开新表: Form2 frm2= new Form2(file); frm2.ShowDialog(); 并从用户输入中读取参数: TextBox tbInsert; private void btnPlay_Click(object sender, EventArgs e) { try { IPAddress ip = IPAddress.Parse(tbInsert.Text); } catch (Exceptio

我有申请表,从主表中打开新表:

Form2 frm2= new Form2(file);
frm2.ShowDialog();  
并从用户输入中读取参数:

TextBox tbInsert;

private void btnPlay_Click(object sender, EventArgs e)
{
    try
    {
        IPAddress ip = IPAddress.Parse(tbInsert.Text);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Error");
        return;
    }
}

我的问题是,如果指定的IP地址不合法,在出现
消息框错误后,关闭并返回到
主窗体
,而不是停留在
窗体2

,如果我猜正确,您的按钮被设置为返回
对话框结果
类型,因此您的窗体被关闭。在form2构造函数中尝试类似的方法

btnPlay.DialogResult = DialogResult.None;

如果我猜对了,您的按钮被设置为返回一个
对话框结果
类型,因此您的表单被关闭。在form2构造函数中尝试类似的方法

btnPlay.DialogResult = DialogResult.None;
您可能将“btnPlay”按钮设置为窗体的Form.AcceptButton,以便其行为类似于OK按钮,按下Enter键将关闭对话框。或者设置按钮的DialogResult属性。无论哪种方式,对话框都会自动关闭,DialogResult属性会自动设置

因此,您必须再次重置它以保持对话框打开:

try
{
    // etc...
}
catch (Exception ex)
{
    this.DialogResult = DialogResult.None;
    MessageBox.Show(ex.Message, "Error");
}
您可能将“btnPlay”按钮设置为窗体的Form.AcceptButton,以便其行为类似于OK按钮,按下Enter键将关闭对话框。或者设置按钮的DialogResult属性。无论哪种方式,对话框都会自动关闭,DialogResult属性会自动设置

因此,您必须再次重置它以保持对话框打开:

try
{
    // etc...
}
catch (Exception ex)
{
    this.DialogResult = DialogResult.None;
    MessageBox.Show(ex.Message, "Error");
}

为什么使用
return?为什么使用
返回