none
testbox和combobox的焦点问题 RRS feed

  • 问题

  •         private void _comboClearingCode_Validating(object sender, CancelEventArgs e)
            {
    
                string clearingCodeText = _comboClearingCode.Text;
                //MessageBox.Show(clearingCodeText);
                int count = 0;
                foreach (string item in _comboClearingCode.Items)
                {
                    if (clearingCodeText == item)
                        break;
                    count++;
                }
                if (count == _comboClearingCode.Items.Count)
                {
                    MessageBox.Show("please input a valid client code");
                    _comboClearingCode.Focus();
                }
            }

    这个方法是对一个combobox的输入进入验证然后再返回去,主要是用了Focus()来获取焦点。但是,失败的时候总是会弹出两次信息,为什么会这样呢?难道是说我FOCUS了之后控件又会再次valiate吗,如果是这样说的话,应该是会一直LOOP下去的。然后当我用鼠标点击COMBOBOX时,又会再次弹出两次信息。

    经过DEBUG后,发现只要光标一点击combobox就会跳到validating事件,而且只会LOOP两次,按理说不是应该无限LOOP的吗?为何就LOOP两次呢?


    2013年8月14日 8:04

答案

  • 你好!

    我在VS2012Ultimate版本中测试下拉列表和文本框,都只会弹出一次窗口。只是在关闭程序的时候也会进行一次较验,也会弹出一次窗口。

    是不是你在这个ComboBox和TextBox中同时添加了KeyPress事件,并且在事件中也弹出消息了?所以才导致弹出2次窗口?请检查一下看看。


    Caillen
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年8月15日 8:13
    版主