【发布时间】:2013-10-04 19:37:08
【问题描述】:
当我从登录屏幕打开一个新表单时,它会登录用户,显示表单然后立即消失???
这是我相关部分的代码:
string checkAdmin = "select * from Logins where Name = @userName and UserType ='Admin'";
string checkUser = "select * from Logins where Name = @userName and UserType ='User'";
using (var connection = new SqlConnection(@"server=.\SQLEXPRESS; database=loginsTest;Trusted_Connection=yes"))
{
using (var checkAdminCommand = new SqlCommand(checkAdmin, connection))
{
//guessing at the column length here. Use actual column size instead of 20
checkAdminCommand.Parameters.Add("@username", SqlDbType.NVarChar, 50).Value = userNameBox.Text;
connection.Open();
if (checkAdminCommand.ExecuteScalar() != null)
{
adminScreen admnscrn = new adminScreen();
admnscrn.Show();
this.Close();
return;
}
else
{
}
}
using (var connection = new SqlConnection(@"server=.\SQLEXPRESS; database=loginsTest;Trusted_Connection=yes"))
{
using (var checkUserCommand = new SqlCommand(checkUser, connection))
{
//guessing at the column length here. Use actual column size instead of 20
checkUserCommand.Parameters.Add("@username", SqlDbType.NVarChar, 50).Value = userNameBox.Text;
connection.Open();
if (checkUserCommand.ExecuteScalar() != null)
{
userScreen usrscrn = new userScreen();
usrscrn.Show();
this.Close();
}
else
{
MessageBox.Show("Invalid details, try again");
passwordBox.Text = "";
}
}
}
所以当我打开 usrscrn 或 admnscrn 时,它会弹起然后又直接返回?我试过研究,我用过 Application.Run(userScreen());等等,它只是抛出一个异常,说明第二个消息循环?
我新建了一个画面,设置为MDI,输入如下代码:
private void MDI_Form_Load(object sender, EventArgs e)
{
Form1 loginscrn = new Form1();
loginscrn.Show();
}
我的 program.cs 文件包含以下代码:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MDI_Form());
}
这行得通吗??
【问题讨论】:
-
这是什么 this.Close();为了 ?你在另一个表格里吗?
-
你试过调试吗??
-
当我打开用户或管理屏幕时,我所在的表单(登录屏幕)必须消失,所以当我打开相关屏幕时(userScreen usrscrn = new userScreen(); usrscrn.Show() ;) 然后它关闭登录屏幕
-
去掉 this.Close() 让我们知道结果
-
it just throws an exception saying something那是什么东西?每当您遇到异常时,always 发布 full 异常。