程序背景:有一个登录窗体,有三个子窗体,通过登录窗体上的选择不同打开不同的子窗体,同时关闭登录窗体。
在网上找到时候发现有说无法关闭登录窗体的,有说用隐藏的,我不知道我这个方法是不是一个好的方法,但至少是一种思路,仅供参考。
主要思路:在程序运行时通过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()的使用,加上条件判断,方法仅供参考