日期:2014-05-18  浏览次数:20956 次

上代码,刚才那个不知为啥出了问题
我做了一个登陆界面,连接远程数据库验证信息,但是由于是远程比较慢,想弹出一个等待窗口,该窗口显示“正在登陆,请稍后....”但是登陆button的事件里如下的代码,wait窗口里面死活label的东西都显示不出来,只显示了背景色,我加个button都显示不出来,求解释....
private void button1_Click(object sender, EventArgs e)
  {
  wait wt = new wait();
wt.Show();
  string user = textBox1.Text.Trim();
  string sql = "select * from userinfo where code= '" + user + "'";
  DataSet ds = DB.getdatasetbysql(sql);

  //this.dataGrid1.DataSource = ds.Tables["table1"];
  if (ds.Tables[0].Rows.Count == 0)
  {
  MessageBox.Show("用户名不存在", "错误", MessageBoxButtons.OK);
  }
  else if (ds.Tables[0].Rows[0]["password"].ToString() == textBox2.Text.Trim())
  {
  userid = ds.Tables[0].Rows[0]["id"].ToString();
  DateTime dt = DateTime.Now;
  Form2 fr = new Form2(userid, dt);
  fr.Show();
  }
  else
  {
  MessageBox.Show("密码错误", "错误", MessageBoxButtons.OK);
  }
  wt.Hide();
  }

------解决方案--------------------
在你的“登录button”代码中,它应该只是唤起一个线程去进行登录,然后立刻纠结了,把控制权立刻交还给主线程。如果你不知道怎么变成,可以看msdn上关于backgroundworker控件的使用,然后用一个backgroundworker执行登录操作,而不要在你的登录button事件处理过程中去执行。登录button事件处理过程只是注册这样一个登录程序给backgroundworker,并不等待它执行完毕。