做了一个小系统,程序启动时为一个登录框体,输入用户名和密码之后在数据库中查找,找到之后关闭登陆界面显示主界面,但是偶尔会发现登录界面和主界面同时显示,不清楚问题出在哪里,请教一下。大概代码如下:
try
{
UsrStruct.Username = userNameT.Text;
UsrStruct.Password = passwordT.Text;
DataSet ds = null;
ds = baseFunction.Login(UsrStruct);
if (ds.Tables[0].Rows.Count > 0) //找到对应的用户名和密码
{
this.Hide();
// if (this.Visible == false) // 加上这句也不行
// {
MainWindow mw = new MainWindow();
mw.Show(); //显示主界面
// }
}
catch
{}
try
{
UsrStruct.Username = userNameT.Text;
UsrStruct.Password = passwordT.Text;
DataSet ds = null;
ds = baseFunction.Login(UsrStruct);
if (ds.Tables[0].Rows.Count > 0) //找到对应的用户名和密码
{
this.Hide();
// if (this.Visible == false) // 加上这句也不行
// {
MainWindow mw = new MainWindow();
mw.Show(); //显示主界面
// }
}
catch
{}
用这个试试
MainWindow mw = new MainWindow();
mw.Show();
this.Hide();换一下位置?
this.Left = -10000;
{
UsrStruct.Username = userNameT.Text;
UsrStruct.Password = passwordT.Text;
DataSet ds = null;
ds = baseFunction.Login(UsrStruct);
if (ds != null && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) //找到对应的用户名和密码
{
this.Hide();
MainWindow mw = new MainWindow();
mw.Show(); //显示主界面
}
catch
{
}
WinForm 关闭登陆窗体,打开主窗体的实现. .
LoginResult loginResult= LoginResult.logout;
try{
UsrStruct.Username = userNameT.Text;
UsrStruct.Password = passwordT.Text;
DataSet ds = null;
ds = baseFunction.Login(UsrStruct);
if (ds.Tables[0].Rows.Count > 0) //找到对应的用户名和密码
{
loginResult = LoginResult.login;
this.Close();
}
}
catch
{
}
}
在Program.cs里写
static void Main()
{
FormMain mainFrm = null;
FormLogin loginForm = new FormLogin();
loginForm.ShowDialog();
if (loginForm.loginResult == LoginInterface.LoginResult.logout)
{
return;
}
mainFrm = new FormMain();
Application.Run(mainFrm);
}
我开始也是这样子想的,我觉得应该是一个时间段的问题,Hide完你的代码不是直接Show另一个吗,平时你Hide一个窗口,貌似也需要时间的吧,这是微软内部设定的时间段
我开始也是这样子想的,我觉得应该是一个时间段的问题,Hide完你的代码不是直接Show另一个吗,平时你Hide一个窗口,貌似也需要时间的吧,这是微软内部设定的时间段
你的意思是来不及?
MainWindow mw = new MainWindow();
this.Hide();
mw.Show();