解决方案 »

  1.   

    本身 你的判断逻辑都有问题。
    你应该放在button事件中判断你的用户名,密码是否输入规范。而不是leave事件。
      

  2.   

    应该放在button事件中对文本框进行判断 
      

  3.   

    哪个BUTTON?是登陆的CLICK事件里面吗?但是 有的登陆界面不是这样啊 输入用户名之后 只要TAB切换了焦点 马上就会验证用户名啊
      

  4.   

    在你的private void textBox1_Leave(object sender, EventArgs e)这个函数最前面加上一句:
    if(textBox1.Text=="")
               {
                   return;
               }
      void textBox1_Leave(object sender, System.EventArgs e)
            {
               if(textBox1.Text=="")
               {
                   return;
               }
    ……
    ……
             }
      

  5.   

    那你就加个 如果为空 就不做验证 这样就可以啦明显不行 我只是举个例子,也有可能 我在TEXTBOX1里面输入了一个用户名(用户名可能错的) 但是又点了取消按钮啊
      

  6.   

    可以把提示用户名不存在的 信息 写在 label上就好了,你现在是messagebox
      

  7.   

    鼠标移到取消按钮上时取消  leave的事件绑定    移出的时候加上  leave     非常规做法
      

  8.   

    啥意思 就是 取消按钮的CLICK事件时候 强制不执行LEAVE吗  代码是啥 我这个搜了很久
      

  9.   

    啥意思 就是 取消按钮的CLICK事件时候 强制不执行LEAVE吗  代码是啥 我这个搜了很久
    移入的时候 去除text的事件绑定     移出的时候添加text事件绑定
      

  10.   

    1、在textBox1_Leave中判断为空则返回点击取消可以啊,当然前提是你的textBox1中的值为空,如果不为空比如你输入一个错误的值她还是会执行Leave函数下面的判断操作。2、你可以像上楼说的将弹出消息框改为将提示消息在label里面显示,貌似很多网站的输入密码前的用户名检测都是显示在label里而不是显示在MessageBox里面3、如果你非要用MessageBox提示用户的话,那么你可以不要在焦点离开textBox1的时候检测,可以在密码框textBox2获得焦点的时候检测,这样只要你想输入密码,只要你的用户名不正确,那么你是无法输入密码的。例如:
    private void textBox2_GotFocus(object sender, EventArgs e)
            {    
    //你的检测代码  
    //……
    //……              
                if (!existsno)
                {
                    textBox1.Clear();
                    textBox1.Focus();
                    MessageBox.Show("学号不存在!");            
                }  
            }不行,这样点取消 没反应 程序不关闭了
      

  11.   

    如果你看一些比较成熟的验证组件就会发现,它不会去搞什么 textBox1.Focus(); 这种东西。你可能将多个控件注册给它,它自动在每一个控件失去焦点时进行验证,并且如果验证失败会自动报警,而且你的“登录”事件中可以先调用它的 IsValid 属性看看是否“全都验证通过”了。但是它绝对不会想当然地搞什么 textBox1.Focus();
      

  12.   

    button事件,然后根据反馈的标示,具体错误的输入框获得焦点,多个的话就取第一个。
      

  13.   

    双击button  在该事件里面写代码  .
      

  14.   

    如果是我的话可能会在 学号文本框的 TextChanged 之类的事件写吧
    首先应该排除空字符串,与其他控件无关,如果学号值不改变的话避免连续重复判断2次以上
      

  15.   

    sorry, 应该是 Validated 事件
      

  16.   

    我觉得这里不应该用leave 事件不合适
      

  17.   

    在if(!existsno)里加一条&&textbox1.text.replace(" ","")!=""
      

  18.   

     
     现在LABEL 可以避免此事件,但是因为我做的是WINDOWS 不是WEB 感觉有点怪,只能技术上来看 我们公司系统的登陆界面是窗口提示的 这个怎么实现的 
      

  19.   

    现在LABEL上面可以 ,但是我做的是C/S 不是WEB程序,如果是MESSBOX应该怎么改?
      

  20.   


    这是啥意思?就是判断textbox1里面有内容..
      

  21.   


    这是啥意思?就是判断textbox1里面有内容..你这个还是不行,只能在TEXTBOX1为空的时候 点击取消按钮 不触发MESSBOX.SHOW事件,如果不为空 点击取消按钮 还是会触发 而且 你这样 我如果textbox1为空  我可以输入密码的。这样 也不行啊
      

  22.   

    不行,这样点取消 没反应 程序不关闭了我的是VS2010 C#不是 是WINDOW程序 没有GOTFOCUS 事件啊
      

  23.   

    这样貌似不能解决根本问题...你是想点取消就直接取消 不进行验证是吧...我感觉你在旁边加一个按钮验证是否存在比较好.不然就得重写textbox1的事件监听....
      

  24.   

    不行,这样点取消 没反应 程序不关闭了我的是VS2010 C#不是 是WINDOW程序 没有GOTFOCUS 事件啊textbox的是Enter事件..
      

  25.   

    谢谢各位 我已经解决了 
     private void button2_MouseMove(object sender, MouseEventArgs e)
            {
                textBox1.Leave -= new EventHandler(textBox1_Leave);
            } 
     加了一个这个事件 就OK了 
      

  26.   

    VS2010C# Winform有GotFocus事件
    在你的窗体.Designer.ce文件找到相应的密码框textBox2,在后面添加一句:
    this.textBox2.GotFocus+= new System.EventHandler(textBox2_GotFocus);
    当然是用Enter事件也是可以的
    对应的是this.textBox2.Enter+=new System.EventHandler(textBox2_Enter);