【发布时间】:2012-01-24 20:01:33
【问题描述】:
如果这个问题与其他问题重复,请原谅我,我可能不知道如何正确说出我的问题,这就是为什么我找不到合适的答案。
我有一个带有多个表单的 winforms C# 应用程序。我的主要表单是一个登录表单,在它之前是一个首先加载的启动屏幕。我的问题是,每当我单击注销时,我都希望它返回登录屏幕。但是,启动屏幕加载并且不再打开登录表单。
我怀疑这是因为我启动了一个新线程才能关闭主窗体并打开下一个窗体?我在某处读到它必须这样做,因为仅使用 main.close() 和 form1.show() 时会发生错误。帮忙?
闪屏代码
public SplashScreen()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Increment(1);
if (progressBar1.Value == 100) timer1.Stop();
}
登录开始
public LOGIN()
{
Thread t = new Thread(new ThreadStart(SplashScreen));
t.Start();
Thread.Sleep(5000);
InitializeComponent();
t.Abort();
}
public void SplashScreen()
{
Application.Run(new SplashScreen());
}
登录退出(重定向到用户主页)
public static void OpenHomeAdmin() // new thread to open home ADMIN
{
Application.Run(new Home_Admin());
}
if (usertype == "UT1") //admin rights
{
//GET LOGGED USER
Home_Admin homeAdmin = new Home_Admin();
homeAdmin.SetUsername(username);
this.Close();
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(OpenHomeAdmin));
t.Start();
}
【问题讨论】:
-
Application.Run(Form)用于在当前线程上运行新应用程序。这是你的意图吗?您只是想显示新表单吗? -
@mhornfeck 我只想关闭我的主表单,然后打开另一个表单。
-
能把处理点击事件的代码贴出来注销吗?