我做了一个登陆界面,连接远程数据库验证信息,但是由于是远程比较慢,想弹出一个等待窗口,该窗口显示“正在登陆,请稍后....”但是登陆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();
        }

解决方案 »

  1.   

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

  2.   

    之前用过backgroundworker 但是感觉蛮复杂,还是谢谢你咯!