日期:2014-05-17  浏览次数:20720 次

怎么屏蔽button对回车的响应
private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show("a");
}

当Button获得焦点后,按回车或空格会响应点击事件,该怎么屏蔽?即按回车或空格不响应点击事件。

------解决方案--------------------
拦截消息或用消息过滤器
------解决方案--------------------
设置按钮获得焦点就立刻转移焦点,让回车或者空格无法激活按钮事件
------解决方案--------------------
使用消息过滤!
------解决方案--------------------
 protected override void WndProc(ref Message m)
        {
            Trace.Write(m.ToString() + "\n");
            if (m.WParam == (IntPtr)0xd 
------解决方案--------------------
 m.WParam == (IntPtr)0x20)
            {
                return;
            }
            base.WndProc(ref m);
        }

单步跟踪一下,为什么回车键值没起作用
------解决方案--------------------
引用:
引用:
拦截消息或用消息过滤器
下面代码空格好使,按空格不会响应了,但是回车不行。


C# code
?



12345678910

        protected override void WndProc(ref Message m)         {             Trace.Write(m.ToString() + "……


你每个消息都拦截一下,看看效果再决定呗
------解决方案--------------------
通过 JQUERY获取按键值,如果是回车则return flase
------解决方案--------------------
来晚了~  
不过,过滤空格的方法用KeyDown不就好了吗?

        private void button1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Space)
            {
                e.SuppressKeyPress = false;
            }
        }

------解决方案--------------------
监视所有的keydown事件,判断如果是回车或者空格就屏蔽

   private void 页面名字_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {

            if (e.KeyCode.ToString() == "Return")
            {
                return;
            }