我是在TextBox的OnKeypress事件中判断输入回车键时弹出MessageBox,消息框是弹出来了,但弹出消息框后,我再按回车,消息框先是关闭了,然后又重新弹出了个消息框。如果是用鼠标点消息框的“确定”按扭来关闭消息框的话就不会重新再弹出消息框。
感觉就象是在消息框弹出后,焦点到消息框中时,TextBox还是能够响应回车键,这个问题是怎么解决呢?

解决方案 »

  1.   

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    MessageBox.Show("Enter");
                }
            }
      

  2.   

    定义一个全局的变量吧.
    bool show=false;
    private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    if(!show)
                    {
                      show=true;
                      MessageBox.Show("Enter");
                      show= false;
                     }                
                }
            }
      

  3.   


      你可能是把事件写错了 在 文本框中有 4 个有关按键的事件  1、KeyDown 
     2、KeyPress 
     3、KeyUp
     4、PreviewKeyDown 如果把代码写在 4、PreviewKeyDown 就会 弹出 两次 对话框 写在 1、KeyDown 事件中不会出现你说的情况 private void textBox1_KeyDown(object sender, KeyEventArgs e)
         {      
             if (e.KeyCode == Keys.Enter)
              {
                  MessageBox.Show("Enter");
               }
          }
      

  4.   

    更正 : 你可能是把事件写错了 在 文本框中有 4 个有关按键的事件1、KeyDown
    2、KeyPress
    3、KeyUp
    4、PreviewKeyDown如果把代码同时写在 1、KeyDown 和 4、PreviewKeyDown 中 就会 弹出 两次 对话框 如果写在 1、KeyDown 或 4、PreviewKeyDown 事件中不会出现你说的情况private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Enter)
    {
    MessageBox.Show("Enter");
    }
    }