请原谅我,如果这个问题与他人重复,我可能不知道如何正确地说出我的问题,这就是为什么我找不到合适的答案。
我有一个具有多种形式的winforms C#应用程序。我的主要表单是一个登录表单,之前是一个首先加载的启动画面。我的问题是每当我点击退出时,我都希望它返回登录界面。但是,启动画面加载并且不再打开登录表单。
我怀疑这是因为我开始了一个新的线程,能够关闭主窗体并打开下一个窗体?我在某处读到了我必须这样做,因为仅使用main.close()和form1.show()时会发生错误。帮助
SPLASH SCREEN CODE
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();
}
答案 0 :(得分:1)
我也有同样的要求,我写了下面的代码!
在Main()
下的 Program.cs 中Application.Run(new Splash()); //Splash Screen if u wanna run BEFORE Login Form
/*Showing Login Form Before Entering the Main Form [Authentication]*/
login f1 = new login();
DialogResult dr = f1.ShowDialog();
if (dr == DialogResult.OK)
{
Application.Run(new Splash()); //Splash Screen if u wanna run AFTER Login Form
Application.Run(new Home_Admin());
}
else
{
Application.Exit();
}
登录表单中的- 满足身份验证后,请编写以下代码
this.DialogResult = DialogResult.OK;
this.Close();
这将关闭您的登录表单并返回Program.cs,然后将加载您的Home_Admin。
在 Home_Admin 中创建一个Logout按钮并在click_event中编写以下代码
this.Close();
login f1=new login();
f1.Show();
现在你将被注销,然后你将回到登录界面。
注意:不要使用this.Close();在主表格中,这可能会退出您的申请。你可以用this.Hide();在这样的追逐中。
希望这会帮助你。 试试这个,然后回复你的评论。答案 1 :(得分:0)
我不认为您需要启动新的线程才能打开/关闭您的表单。请尝试使用以下代码:
if (usertype == "UT1") //admin rights
{
//GET LOGGED USER
Home_Admin homeAdmin = new Home_Admin();
homeAdmin.SetUsername(username);
this.Hide();
homeAdmin.Show();
}
请注意Form.Close()
将释放Form对象,这意味着在对象中创建的所有资源也将被关闭。 Read more here。 Form.Hide()
也可以隐藏用户视图中的表单。