隐藏或处理表单

时间:2012-09-13 14:05:45

标签: c# winforms hide dispose

我有一个MainForm,来自MainForm我致电ConfirmationForm

using (var f = new ConfirmationForm())
                f.ShowDialog();

然后在ConfirmationForm中,我想展示另一个UsersListForm

if (ConfirmSuccess)
{
this.Hide; //or this.Close
using (var f = new UsersListForm())
f.ShowDialog();
}

现在,当ConfirmSuccess等于true时,MainForm也将HideClose

如何防止MainForm不会HideClose?任何的想法?提前致谢。

更新:我的问题已解决。我首先调用UsersListForm,然后从UsersListForm的加载事件调用我调用ConfirmationForm,然后使用DialogResult == System.Windows.Forms.DialogResult.OK,现在每件事都很好:)

1 个答案:

答案 0 :(得分:1)

如果您打算在打开MainForm之前请求用户确认,最好的方法是在创建之后调用和确认表单并调用MainForm。 如果您打算在应用程序开头寻求确认,请在Application.Run(new MainForm())之前将调用ConfirmationForm放在Program类中;

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        ConfirmationForm confForm = new ConfirmationForm();
        confForm.ShowDialog();
        Application.Run(new MainForm());
    }
}

但如果打算在单独的呼叫点中请求应用程序内的验证,则应使用ShowDialog调用ConfirmationForm,然后调用所需的表单。

但是如果你的意图是用开放表单验证请求并隐藏它,你可以使用ConfirmationForm的DialogResult属性通过比较(ConfirmationForm.ShowDialog () == DialogResult.OK)来返回验证的成功或失败。见this example