通过登录窗体,登录不同的窗体,同时关闭登录窗体

程序背景:有一个登录窗体,有三个子窗体,通过登录窗体上的选择不同打开不同的子窗体,同时关闭登录窗体。

在网上找到时候发现有说无法关闭登录窗体的,有说用隐藏的,我不知道我这个方法是不是一个好的方法,但至少是一种思路,仅供参考。

主要思路:在程序运行时通过ShowDialog(),打开登录窗体,当然要先实例化,然后找到登录窗体上的RadioButton控件,判断其属性,根据属性值不同打开不同的窗体(即通过Application.Run()方法打开)。

程序实现:

1:)  登录窗体上有三个RadioButton,选择不同,打开不同的窗体

2:)  修改 Program 里的方法,实现判断RadioButton的Name属性,然后使用Application.Run(),打开不同的窗体

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace UI
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new LoginForm());

            //实例化LoginForm窗体的对象
            LoginForm loginForm = new LoginForm();

            //模态窗体打开LoginForm,并判断其DialogResult
            if (loginForm.ShowDialog() == DialogResult.OK)
            {
                //获得GroupBox控件里的子控件集合
                GroupBox gb = (GroupBox)loginForm.Controls.Find("gbCheck", true)[0];
                RadioButton rdo = null;
                //遍历GroupBox控件里的子控件,转换为 RadioButton 类型的控件,方便后面判断其Name属性
                foreach (Control item in gb.Controls)
                {
                    rdo = item as RadioButton;
                } 
                //根据Name属性,打开不同的窗体
                if (rdo.Name == "TaskForm")
                {
                    Application.Run(new MainTaskForm());
                }
                else if (rdo.Name == "UserForm")
                {
                    Application.Run(new MainUserForm());
                }
                else
                {
                    Application.Run(new MainProjectsForm());
                }
            }
        }
    }
}

程序总结:其实主要是ShowDialog()的使用,加上条件判断,方法仅供参考

原文地址:https://www.cnblogs.com/wanly/p/3415255.html