在我的winform应用程序中;我有登录表格和主要表格。
当我运行程序时,我希望登录表单位于顶部和主窗体后面。
还有一件事是,在我没有使用用户名和密码正确登录之前,不应该访问主表单,只能访问登录表单。
我的语言是C#.Net。
请提供关于如何实现这一目标的想法?
答案 0 :(得分:2)
在Form.ShowDialog
事件上使用Form.OnShown
(在表格中显示模式对话框)(每当首次显示表单时发生):
private void Form1_Load(object sender, EventArgs e)
{
this.Shown += Form1_Shown;
}
private void Form1_Shown(object sender, EventArgs e)
{
LoginForm loginForm = new LoginForm ();
if (loginForm.ShowDialog() == DialogResult.Ok)
{
....
}
}
您的Program
和LoginForm
是这样的:
//Progrmm.cs
Application.Run(new Form1());
//LoginForm.cs
public partial class LoginForm : Form
{
public LoginForm ()
{
InitializeComponent();
}
private void buttonLogin_Click(object sender, EventArgs e)
{
//check username password
if(texboxUser == "user" && texboxPassword == "password")
{
DialogResult = DialogResult.OK;
Close();
}
else
{
MessageBox.Show("Wrong user pass");
}
}
}
答案 1 :(得分:0)
在大班:
Application.Run(new frmMain());
然后在Form类中:
private void frmMain_Load(object sender, EventArgs e)
{
//---------------------------------------------
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
t.Tick +=new EventHandler(t_Tick);
t.Interval = 1000;
t.Start();
}
void t_Tick(object sender, EventArgs e)
{
frmLogin l = new frmLogin();
if (l.ShowDialog(this) == DialogResult.Ok)
((System.Windows.Forms.Timer)sender.Dispose();
}
虽然您必须进一步确保在没有正确的用户名和密码(应由您自己决定)的情况下不退出登录表单
使用System.Windows.Forms.Timer,因为它在同一个线程中运行,因此会阻止对主窗体的调用(与System.Timers.Timer不同)