如果密码错误,再次显示表单

时间:2011-10-14 05:06:14

标签: c# winforms

我有以下代码检查密码/登录并执行其他操作:

public virtual void run()
        {
            if (appInitializer!=null)
            {
                ISecurityManager securityManager = appInitializer.SecurityManager;
                if (securityManager!=null)
                {                   
                    if (securityManager.DoLogin())
                    {
                        RegisterDefaultActionsGroup();
                        InitializePlugins(appInitializer.Plugins);
                        ActionsManager.Inst.ApplySecurity(securityManager, securityManager.CurrentUser);
                        mainForm = new MainForm();
                        mainForm.Text = appInitializer.ApplicationTitle;
                        if (appInitializer.ApplicationIcon != null)
                        {
                            mainForm.Icon = appInitializer.ApplicationIcon;
                        }
                        CorrectFormSizes(mainForm);
                        Context[Constants.MainForm] = mainForm;
                        MenuManager.Inst.FillMenu(DefaultGroups.MAIN_MENU, mainForm.MainMenu, ActionClick);
                        if(appInitializer.IsHaveToCreatePanelInfo) PanelInfoManager.Inst.FillInfo(mainForm);
                        if (appInitializer.IsHaveToCreateToolBar)
                        {
                            MenuManager.Inst.FillToolbar(DefaultGroups.MAIN_TOOLBAR, mainForm.MainToolStrip, ActionClick);                            
                        }
                        mainForm.MainToolStrip.Visible = mainForm.MainToolStrip.Items.Count > 0;
                        NotifyPluginsAboutShowing(appInitializer.Plugins);
                        Application.Run(mainForm);
                    }                    
                }
            }
        }

主要方法是DoLogin。如果返回true则运行其他操作(填充菜单,创建工具栏等) 问题是,如果用户输入错误密码,则DoLogin返回false并且应用程序正在关闭 我希望如果用户输入错误的密码,则再次运行DoLogin(在方法内部创建表单) 我怎样才能重写这段代码来实现呢? 谢谢。

PS。 Run是我自己的Framework类的成员。在Program.cs文件中有以下代码:

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Framework framework = new Framework(new EArchiveInitializer());
            framework.run();
}

1 个答案:

答案 0 :(得分:3)

为什么不只是while (!securityManager.DoLogin()) { }