在我的winform应用程序中;我有登录表单和主窗体。如何在前台显示登录表单和登录表单后面的Mainform?
当我运行程序时,我想要登录窗体顶部和主窗体后面。
一件事是,直到我不使用用户名和密码登录正确,主要形式不应该容易,只有登录表单应该访问。
我的语言是C#.Net。
请提供有关如何实现此目的的想法?
在我的winform应用程序中;我有登录表单和主窗体。如何在前台显示登录表单和登录表单后面的Mainform?
当我运行程序时,我想要登录窗体顶部和主窗体后面。
一件事是,直到我不使用用户名和密码登录正确,主要形式不应该容易,只有登录表单应该访问。
我的语言是C#.Net。
请提供有关如何实现此目的的想法?
使用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)
{
....
}
}
您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");
}
}
}
。这不会工作,猜测为什么:) – nawfal 2012-07-30 06:49:41
这个代码是主要形式,哪些代码应该登录表单 – 2012-07-30 06:54:55
我应该在Program.cs中写入文件 – 2012-07-30 07:09:37
我一个不喜欢你提出的设计,会想首先显示登录表单,那么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)
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
现在清楚吗? – nawfal 2012-07-30 06:43:55
如果(l.ShowDialog()== DialogResult.Ok) ((System.Timers.Timer)sender.Dispose();?这部分giveing我的错误应该是什么的登录表单代码 – 2012-07-30 06:49:37
而不是简单地为后面的登录表单的主要形式,你可以把它隐藏,直到用户名/密码是否正确。 – Ari 2012-07-30 06:33:34
请提及您是否使用母版页? – user1102001 2012-07-30 06:38:21
主页出现在asp.net没有的WinForms @ user1102001 – 2012-07-30 06:43:44