怎么屏蔽button对回车的响应

ghost5216 2013-04-12 03:52:09
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("a");
}

当Button获得焦点后,按回车或空格会响应点击事件,该怎么屏蔽?即按回车或空格不响应点击事件。
...全文
1281 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
燊辻 2014-10-28
  • 打赏
  • 举报
回复
来学习
iceMung 2013-04-12
  • 打赏
  • 举报
回复
引用 13 楼 ghost5216 的回复:
引用 11 楼 iceMung 的回复:来晚了~ 不过,过滤空格的方法用KeyDown不就好了吗? C# code?1234567 private void button1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Space) ……
不好意思,调试时候是正常的,运行时候就无效,没仔细测
ghost5216 2013-04-12
  • 打赏
  • 举报
回复
引用 12 楼 dashuai521241 的回复:
监视所有的keydown事件,判断如果是回车或者空格就屏蔽 CSS code?123456789101112 private void 页面名字_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode.ToString() == "R……
不懂含义
fangxiaofelix 2013-04-12
  • 打赏
  • 举报
回复
引用 11 楼 iceMung 的回复:
来晚了~ 不过,过滤空格的方法用KeyDown不就好了吗? C# code?1234567 private void button1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Space) { ……
LS可行
ghost5216 2013-04-12
  • 打赏
  • 举报
回复
引用 11 楼 iceMung 的回复:
来晚了~ 不过,过滤空格的方法用KeyDown不就好了吗? C# code?1234567 private void button1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Space) { ……
不明白您的意思 我测试是不行的
Rockstone 2013-04-12
  • 打赏
  • 举报
回复
监视所有的keydown事件,判断如果是回车或者空格就屏蔽

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

            if (e.KeyCode.ToString() == "Return")
            {
                return;
            }
            else if (e.KeyValue.ToString() == "")
            {
                return;
            }
        }
iceMung 2013-04-12
  • 打赏
  • 举报
回复
来晚了~ 不过,过滤空格的方法用KeyDown不就好了吗?

        private void button1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Space)
            {
                e.SuppressKeyPress = false;
            }
        }
jinkaha 2013-04-12
  • 打赏
  • 举报
回复
通过 JQUERY获取按键值,如果是回车则return flase
三五月儿 2013-04-12
  • 打赏
  • 举报
回复
引用 3 楼 ghost5216 的回复:
引用 1 楼 bdmh 的回复: 拦截消息或用消息过滤器 下面代码空格好使,按空格不会响应了,但是回车不行。 C# code ? 12345678910 protected override void WndProc(ref Message m) { Trace.Write(m.ToString() + "……
你每个消息都拦截一下,看看效果再决定呗
ghost5216 2013-04-12
  • 打赏
  • 举报
回复
如果没有更好的方法 我就给自己加分了
ghost5216 2013-04-12
  • 打赏
  • 举报
回复

         protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (keyData == Keys.Enter)
            {
                return true;
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }
用这个方法可以屏蔽回车
shawn_yang 2013-04-12
  • 打赏
  • 举报
回复
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); } 单步跟踪一下,为什么回车键值没起作用
E次奥 2013-04-12
  • 打赏
  • 举报
回复
使用消息过滤!
ghost5216 2013-04-12
  • 打赏
  • 举报
回复
引用 2 楼 shawn_yang 的回复:
设置按钮获得焦点就立刻转移焦点,让回车或者空格无法激活按钮事件
谢谢 但我问这个问题不是单纯的为了搞按钮。是别的一个问题的映射,因为原本的问题很麻烦,所以通过这种提问的方式来寻求解决办法。
ghost5216 2013-04-12
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
拦截消息或用消息过滤器
下面代码空格好使,按空格不会响应了,但是回车不行。

        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);
        }
下面是按回车时的Message msg=0x87 (WM_GETDLGCODE) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0 msg=0xf (WM_PAINT) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0 msg=0x8 (WM_KILLFOCUS) hwnd=0x191058 wparam=0x2c112e lparam=0x0 result=0x0 msg=0x281 (WM_IME_SETCONTEXT) hwnd=0x191058 wparam=0x0 lparam=0xffffffffc000000f result=0x0 msg=0x282 (WM_IME_NOTIFY) hwnd=0x191058 wparam=0x1 lparam=0x0 result=0x0 msg=0xf (WM_PAINT) hwnd=0x191058 wparam=0x0 lparam=0x0 result=0x0 该拦截谁? 谢谢
shawn_yang 2013-04-12
  • 打赏
  • 举报
回复
设置按钮获得焦点就立刻转移焦点,让回车或者空格无法激活按钮事件
bdmh 2013-04-12
  • 打赏
  • 举报
回复
拦截消息或用消息过滤器

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧