請原諒我,如果這個問題是其他人的重複,我可能不知道如何正確地說出我的問題,這就是爲什麼我找不到合適的答案。C#線程:如何在線程關閉後打開主窗體
我有一個winforms C#應用程序與多種形式。我的主要形式是一個登錄表單,它是一個首先加載的啓動畫面。我的問題是,無論何時單擊註銷,我都希望它返回到登錄屏幕。但是,啓動屏幕加載並不再打開登錄表單。
我懷疑這是因爲我啓動了一個新線程才能關閉mainform並打開下一個表單?我在某處讀過它,因爲僅僅使用main.close()和form1.show()時會發生錯誤。幫幫我?
SPLASH屏幕代碼
public SplashScreen()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Increment(1);
if (progressBar1.Value == 100) timer1.Stop();
}
LOGIN START
public LOGIN()
{
Thread t = new Thread(new ThreadStart(SplashScreen));
t.Start();
Thread.Sleep(5000);
InitializeComponent();
t.Abort();
}
public void SplashScreen()
{
Application.Run(new SplashScreen());
}
LOGIN EXIT(重定向到用戶的主頁)
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我只想關閉我的主窗體,然後打開另一個窗體。 – RMSP
您可以將處理單擊事件的代碼發佈到註銷嗎? –