C# C语言中的两种不同windows窗体#
我不熟悉C#和.NET编程。我想设计一个应用程序,打开一个小的登录屏幕,当用户按下“登录”按钮时,我的程序应该关闭登录表单并传递到一个新表单。如何实现这个简单的过程C# C语言中的两种不同windows窗体#,c#,winforms,login,screen,C#,Winforms,Login,Screen,我不熟悉C#和.NET编程。我想设计一个应用程序,打开一个小的登录屏幕,当用户按下“登录”按钮时,我的程序应该关闭登录表单并传递到一个新表单。如何实现这个简单的过程 谢谢。这可能是一个解决方案 在LoginForm中 public bool IsLoggedIn { get; private set;} public void LoginButton_Click(object sender, EventArgs e) { IsLoggedIn = DoLogin(); if(IsLogg
谢谢。这可能是一个解决方案 在LoginForm中
public bool IsLoggedIn { get; private set;}
public void LoginButton_Click(object sender, EventArgs e)
{
IsLoggedIn = DoLogin();
if(IsLoggedIn)
{
this.Close()
}
else
{
DoSomethingElse();
}
}
在program.cs中
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LoginForm loginForm = new LoginForm();
Application.Run(loginForm);
if (loginForm.IsLoggedIn)
{
Application.Run(new OtherForm());
}
}
这里的挑战是传递给Application.Run()方法的表单。如果您使用登录表单的实例启动应用程序,然后关闭该表单,我相信应用程序将退出。毫无疑问,有几种方法可以解决这个问题 一种方法是将主窗体的实例传递给Application.Run方法(这将消息循环绑定到该窗体实例,而不是登录窗体)。在主窗体的OnLoad方法中,可以使用模式对话框执行登录。i、 e
//--Main form's OnLoad method
protected override void OnLoad(EventArgs ea)
{
// Remember to call base implementation
base.OnLoad(ea);
using( frmLogin frm = new frmLogin() )
{
if( frm.ShowDialog() != DialogResult.OK )
{
//--login failed - exit the application
Application.Exit();
}
}
}
根据应用程序的总体架构,我通常喜欢让主窗体控制启动登录屏幕
//Program.cs:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
//MainForm.cs
private void MainForm_Load(object sender, EventArgs e)
{
this.Hide();
Login login = new Login();
if (login.ShowDialog() == DialogResult.OK)
{
//make assignments from login
currentUser = login.User;
}
else
{
//take needed action
Application.Exit();
return;
}
}
如果确实使用.ShowDialog(),请不要忘记将其包装在using块周围,或者在完成后在登录表单上使用.Dispose。必须手动处理模型对话框。如果登录失败,为什么必须退出应用程序?无法登录时浏览器或选项卡是否关闭?您可以在“项目设置”中设置退出行为,以便在关闭所有表单时关闭浏览器或选项卡。您不必退出。这只是一种方法的一个例子。项目设置退出行为。。。酷。没注意到。