如何在正面和上面显示登录表单登录表格背后的主要表格?

时间:2012-07-30 06:30:43

标签: c# winforms login

在我的winform应用程序中;我有登录表格和主要表格。

当我运行程序时,我希望登录表单位于顶部和主窗体后面。

还有一件事是,在我没有使用用户名和密码正确登录之前,不应该访问主表单,只能访问登录表单。

我的语言是C#.Net。

请提供关于如何实现这一目标的想法?

2 个答案:

答案 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)
    {
     ....
    }
}

您的ProgramLoginForm是这样的:

//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)

我不喜欢你提出的设计,想先显示Login表单,然后是mainform。但如果你绝对需要它,那么你可以在下面做..

在大班:

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不同)