2012-07-30 108 views
0

在我的winform应用程序中;我有登录表单和主窗体。如何在前台显示登录表单和登录表单后面的Mainform?

当我运行程序时,我想要登录窗体顶部和主窗体后面。

一件事是,直到我不使用用户名和密码登录正确,主要形式不应该容易,只有登录表单应该访问。

我的语言是C#.Net。

请提供有关如何实现此目的的想法?

+0

而不是简单地为后面的登录表单的主要形式,你可以把它隐藏,直到用户名/密码是否正确。 – Ari 2012-07-30 06:33:34

+0

请提及您是否使用母版页? – user1102001 2012-07-30 06:38:21

+0

主页出现在asp.net没有的WinForms @ user1102001 – 2012-07-30 06:43:44

回答

1

使用Form.ShowDialog(显示形式一个模式对话框)(当第一次显示的形式出现):

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"); 
     } 
    } 
} 
+0

。这不会工作,猜测为什么:) – nawfal 2012-07-30 06:49:41

+0

这个代码是主要形式,哪些代码应该登录表单 – 2012-07-30 06:54:55

+0

我应该在Program.cs中写入文件 – 2012-07-30 07:09:37

0

我一个不喜欢你提出的设计,会想首先显示登录表单,那么MainForm中。但是,如果你确实需要它,那么你可以做下面的..

在主类:

Application.Run(new frmMain()); 

然后在窗体类:

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,因为它在同一个线程中运行,因此会阻止CA LLS主窗体上的Form.OnShown事件(不像System.Timers.Timer)

+0

System.Timers.Timer t = new System.Timers.Timer(1000); t.Elapsed + = new System.Timers.ElapsedEventHandler(t_Elapsed); t.Start(); } void t_Elapsed(object sender,System.Timers.ElapsedEventArgs e) frmLogin l = new frmLogin(); if(l.ShowDialog()== DialogResult.Ok) ((System.Timers.Timer)sender.Dispose(); }其中我把这个代码以登录形式或主要形式 – 2012-07-30 06:41:35

+0

现在清楚吗? – nawfal 2012-07-30 06:43:55

+0

如果(l.ShowDialog()== DialogResult.Ok) ((System.Timers.Timer)sender.Dispose();?这部分giveing我的错误应该是什么的登录表单代码 – 2012-07-30 06:49:37