在完成之前不要返回主表格

时间:2014-02-08 16:19:08

标签: c#

我有2个表单 - 当在Form1上按下按钮时,它会触发表单2打开。用户必须输入一些信息,然后按确定。

如果信息没有填写,我会抛出一个错误,但结果是alwayys返回到主窗体 - 我不希望这种情况发生,直到所有信息都完成。我怎么能这样做?

也许我应该做的是传回一个bool Success并以这种方式处理它?<​​/ p>

Form1中

FormSaveChanges FormSaveChanges = new FormSaveChanges();
var result = FormSaveChanges.ShowDialog();

if (result == DialogResult.OK)
{
    // The code comes back here even if not all information was filled out
}

表格2

private void radButtonSaveChanges_Click(object sender, EventArgs e)
{
    try
    {
        if (radTextBoxReferenceNumber.Text == "")
        {
            RadMessageBox.Show(this, " You must enter a reference number", "Error", MessageBoxButtons.OK, RadMessageIcon.Error);
            return; // Quit  
        }
        else
        {
            // Save items and return to the main form
        }
    }
}

2 个答案:

答案 0 :(得分:3)

在Form2中,当一切正常时,添加以下代码行:

this.DialogResult = DialogResult.OK;

答案 1 :(得分:1)

只需将第二个表单的属性DialogResult更改为DialogResult.None

即可
private void radButtonSaveChanges_Click(object sender, EventArgs e)
{
    try
    {
        if (radTextBoxReferenceNumber.Text == "")
        {
           RadMessageBox.Show(this, " You must enter a reference number", ....);

           // Stop the WinForms manager to close this form
           this.DialogResult = DialogResult.None;
           return; 
        }
        else
        {
            // all ok.... let's return the DialogResult property of the button
            // Do nothing, the WinForms manager gets the DialogResult of this button and
            // assign it to the form closing it....
        }
    }
]

通过这种方式,Form2没有关闭,您的用户可以在不重新输入所有内容的情况下修复错误

表单的DialogResult属性通常设置为DialogResult.None,并更改为按钮上显示的相同属性的值。如果按钮具有DialogResult = DialogResult.OK,则代码退出ShowDialog,从单击的按钮返回DialogResult的值。 将表单设置为None可以防止在需要修复输入错误时关闭表单