覆盖winforms OnLoad会导致错误创建处理程序错误

时间:2012-07-26 10:52:22

标签: c# winforms

我正在开发一个具有数百种表单的应用程序,并且表单中的表单以多种方式链接。

问题是我想对表单应用身份验证。

我所做的是从我的案例中继承所有形式的共同类“ AUTH

在Auth中,我做的是Override OnLoad方法,在这里检查是否满足某些条件,然后显示表单,然后隐藏它并显示其他表单。

我的代码是:

public class Auth : Telerik.WinControls.UI.RadForm
{

    protected override void OnLoad(EventArgs e)
    {
        if (<Some Condition>)
        {
            base.Hide();

            frmAccessDenied fs = new frmAccessDenied();

            fs.Show();

            base.OnLoad(e);

        }
        else
        {
            base.OnLoad(e);
        }

    }

}

在这种情况下发生的事情是打开frmAccessDenied但是应用程序崩溃说错误创建HANDLER

并指向我打开表单的位置,如

                                        Form childForm = new frmMyFORM();
                                        childForm.MdiParent = this;
       **==>>>Crashed HERE**            childForm.Show();

2 个答案:

答案 0 :(得分:0)

您可以检查主程序文件中的条件。在Main方法中,您将具有以下内容:

public static void Main(string[] args) {
    // Starts the application.
    if (<Some Condition>)
    {
        Application.Run(new frmAccessDenied());
    }
    else Application.Run(new Form1());
}

答案 1 :(得分:0)

MDI Parent是错误。

 Form childForm = new frmMyFORM();
                                    childForm.MdiParent = this;
   **==>>>Crashed HERE**            childForm.Show();

如果我跳过代码

childForm.MdiParent = this;

然后开始工作。