我的项目中有两个表单(Login
和Main
)。我想要实现的是,如果登录成功,我必须显示Main
表单并关闭Login
表单。我以Login
形式使用此方法,在登录成功时关闭Login
表单。但是当我关闭登录表单时,所有表单都已关闭。
答案 0 :(得分:0)
您可以在Program.cs上执行此操作,在后台运行主表单并在成功授权用户时显示:
的Program.cs:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MainForm frm = new MainForm();
Application.Run();
}
然后在您的主表单上,成功授权后,显示它,在这种情况下,我把它放在构造函数上:
public MainForm()
{
Login frmLogin = new Login();
frmLogin.Show();
if (frmLogin.ShowDialog(this) == DialogResult.OK)
{
this.Show();
InitializeComponent();
}
}
请确保在您的登录表单上成功授权后添加以下代码:
this.DialogResult = DialogResult.OK;
答案 1 :(得分:0)
您可以在登录表单上输入以下代码检查登录成功。
Form2 formmain = new Form2();
this.Hide();
if (formmain.ShowDialog() == DialogResult.OK)
{
Application.Run(new Form2());
}
this.Close();
答案 2 :(得分:0)
当app启动时,你可以直接在program.cs的main方法中使用登录表单。
此示例包含两个名为MainForm和FrmLogin的表单。
<强> Program.cs的强>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
FrmLogin frmLogin = new FrmLogin();
UserInfo userInfo = frmLogin.Login();
if (userInfo != null)
{
// open main form with current user
Application.Run(new MainForm(userInfo));
}
}
<强> UserInfo.cs 强>
此类包含loged用户信息
public class UserInfo
{
// this fields are samples.
// you can add what do you need..
public int Id { get; set; }
public string UserName { get; set; }
public DateTime LoginDate { get; set; }
public string Roles { get; set; }
}
<强> FrmLogin 强>
此表单自行打开并检查用户并返回结果
您应将取消设置为取消按钮的 Dialogresult 属性
// you need add these controls to form
// txtUserName(TextBox)
// txtPassword(TextBox)
// btnOK (Button) // need click event
// btnCANCEL(Button)
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
}
UserInfo currentUser;
private void btnOK_Click(object sender, EventArgs e)
{
var userName = txtUserName.Text;
var password = txtPassword.Text;
currentUser = GetUser(userName, password);
if (currentUser == null)
{
MessageBox.Show("invalid username | password");
this.DialogResult = DialogResult.Cancel;
}
this.DialogResult = DialogResult.OK;
}
public UserInfo Login()
{
var dialogResult = this.ShowDialog();
if (dialogResult != DialogResult.OK)
return null;
return currentUser;
}
private UserInfo GetUser(string userName,string passwrod)
{
// you should check from where users located area(like db)
if (userName.Equals("admin") && passwrod.Equals("test"))
{
return new UserInfo {
Id = 1,
LoginDate = DateTime.Now,
Roles = "Admin",
UserName ="admin"
};
}
return null;
}
}
<强>的MainForm 强>
UserInfo _currentUser;
public partial class MainForm : Form
{
UserInfo _currentUser;
public MainForm(UserInfo user)
{
_currentUser = user;
InitializeComponent();
}
}