C#如何设置启动窗体但现实他的子窗体

来源:百度知道 编辑:UC知道 时间:2024/09/12 18:29:29
比如说我的主窗体名叫 MainForm也是启动窗体 启动它是并不现实它 而是显示它的子窗体LoginForm(即登录验证窗体)当身份验证成功之后才显示主窗体并且主窗体需要存LoginForm中获取到一些登录信息(如:用户名)并进行处理,那麽那些事件的处理应放在MainForm的构造函数中 那些应放在他的家在事件中?Q:307105762 十分感谢

public Form1()
{
Form2 f2 = new Form2();
f2.ShowDialog();

InitializeComponent();
}

在 Form1 加载之前 加载 Form2 。

但会发现, 如果,你关闭 Form2 ,那么 Form1 依然会启动。
那么,核心问题就在——如何 用 Form2 来决定 是否让 Form1 执行 InitializeComponent(); 加载方法。

这很好实现,只要 在 Form2 中 声明一个 Form1 的对象,
而 Form1 在调用 f2.ShowDialog(); 或 f2.Show(); 之前,将 自身作为变量传递给 Form2 。

然后 Form2 就来根据条件判断 是否让 Form1 执行 Form1_Show() 方法。

Form1_Show()代码:

public void Form1_Show()
{
InitializeComponent(); //在 调用的方法中 执行加载事件。
}

你在Form_Load中去判断当前有没登陆,如果没有登陆则LoginForm form = new LoginForm();就弹出登陆窗口,并把MainForm.Enabled=False;当登陆成功后在将MainForm.Enabled=True;