C#实现功能:在登陆窗口点击登陆按钮后加载主窗体,此时登陆窗口的登录按钮消失,显示进度条,并显示主窗口加载的阶段和进度,主窗体完成加载后,登录界面消失
时间: 2023-12-11 17:01:57 浏览: 18
您可以按照以下步骤实现该功能:
1. 在登录窗口中,添加一个名为progressBar1的进度条控件,并将其Visible属性设置为false,即进度条默认不可见。
2. 在登录窗口中,添加一个名为label1的标签控件,用于显示主窗口加载的阶段。
3. 在登录窗口中的登录按钮的Click事件中,将登录按钮的Visible属性设置为false,进度条和标签的Visible属性设置为true,开始显示进度条和标签。
4. 在登录按钮的Click事件中,启动一个新的线程来加载主窗口,并在主窗口加载的过程中更新进度条和标签的值。
5. 在主窗口加载完成后,关闭登录窗口。
下面是示例代码:
登录窗口中的登录按钮Click事件:
```
private void btnLogin_Click(object sender, EventArgs e)
{
// 隐藏登录按钮,显示进度条和标签
btnLogin.Visible = false;
progressBar1.Visible = true;
label1.Visible = true;
// 启动一个新线程来加载主窗口
Thread thread = new Thread(new ThreadStart(LoadMainForm));
thread.Start();
}
// 加载主窗口的方法
private void LoadMainForm()
{
// 创建主窗口实例
MainForm mainForm = new MainForm();
// 更新进度条和标签的值
for (int i = 0; i <= 100; i++)
{
progressBar1.Value = i;
label1.Text = "正在加载阶段" + i.ToString() + "……";
Thread.Sleep(20); // 可以根据实际需要调整等待时间
}
// 显示主窗口并关闭登录窗口
mainForm.ShowDialog();
this.Invoke(new Action(() => this.Close()));
}
```
在上面的代码中,我们在每次更新进度条和标签的值时,都使用了Invoke方法来在主线程中执行更新操作。这样可以确保在多线程环境下更新控件的安全性。