在datagridview中默认情况下,按了enter键会跳到下一行,
但是不我想这么做,我想把enter屏蔽掉,不执行。怎么做啊?
我在keypress中写了e.Handle = true;不行啊。请教你们

解决方案 »

  1.   


         private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    e.SuppressKeyPress = true;
                }
            }
      

  2.   

    private void dataGridView1_KeyDown(object sender, KeyEventArgs e) 

        if (e.KeyCode == Keys.Enter) 
        { 
             //e.SuppressKeyPress = true; 
              e.Handle = true;//这样也行
         } 

      

  3.   

    keypress换成KeyDown就OK了
    更正:e.Handled = true;
      

  4.   

    一个很奇怪的现象,为什么keydown就行了呢?
      

  5.   


    private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode  == Keys.Enter)
                {
                    e.Handled = false ;
                }
            }
      

  6.   

    KeyPress是这个控件有获得焦点后再按某个键发生
      

  7.   

    KeyDown   在控件有焦点的情况下按下键时发生。 (从 Control 继承。)  
    KeyPress   在控件有焦点的情况下按下键时发生。 (从 Control 继承。)  msdn上这么说。
    键事件按下列顺序发生: 
    KeyDown 
    KeyPress 
    KeyUp 
    若要仅在窗体级别处理键盘事件而不允许其他控件接收键盘事件,请将窗体的 KeyPress 事件处理方法中的 KeyPressEventArgs.Handled 属性设置为 true。某些键,如 Tab、Return、Esc 和箭头键,由控件自动处理。为使这些键引发 KeyDown 事件,必须在窗体上的每个控件中重写 IsInputKey 方法。用于重写 IsInputKey 的代码需要确定是否按下了某个特殊键,并且需要返回一个 true 值。非字符键不会引发 KeyPress 事件;但非字符键却可以引发 KeyDown 和 KeyUp 事件。
    使用 KeyChar 属性在运行时对键击进行取样,并且使用或修改公共键击的子集。
    若要仅在窗体级别处理键盘事件而不允许其他控件接收键盘事件,请将窗体的 KeyPress 事件处理方法中的 KeyPressEventArgs.Handled 属性设置为 true。我个人认为,你在keypress事件里写不行可能因为datagridview的响应回车移动焦点的方法在keydown后,keypress前写的。