我想实现这样的一个功能,就是一个按钮(Button),我想通过一个快捷键,来实现它的单击事件,如何实现呀?
或者重写一个Button?请教了,给点参考,谢谢。

解决方案 »

  1.   

    Buttion1的属性里找text属性。。
    为其赋值,名称+(&快捷键)
    例如ok(&F)就好了。。单击F 执行button单击事件
      

  2.   

    用消息,在窗体上定义一个函数protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Form.Keys keyData)
    {
        //用Alt+S键
        if (keyData==(Keys.Alt | Keys.S))
        {
            btnOK_Click(null, null);
            return true;
        }    //或才用Enter键
        if (keyData == Keys.Enter)
        {
            btnOK_Click(null, null);
            return true;
        }    
        return base.ProcessCmdKey(ref msg, keyData);
    }

    假如果你的按钮的单击事件如下:
    private void btnOK_Click(object sender, EventArgs e)
    {
        //要执行的操作
    }
      

  3.   


     protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if (keyData == (Keys.F2))
                {
                    button1_Click(null, null);
                    return true;
                }
                return base.ProcessCmdKey(ref msg, keyData);
             }
    这样也行
      

  4.   

    如二楼,如果是winform里面。就可以了
    在.net里面。写js
      

  5.   

    打掉了。在asp.net里面。需要js
      

  6.   

    我想这个意思啦,就是比如一个按钮(btnOK),我想通过按快捷键:Ctrl + O来执行,怎么实现呀?楼上有的(&O)这个我知道,只能用Alt的,我想用Ctrl组合的,请教如何实现?
      

  7.   

    可是我是在C#WinForm里面啊,请教了
      

  8.   

    button1&B  设B为button1的快捷键
      

  9.   

    我想用Ctrl 加上某个键呀,
      

  10.   

    文同志 做MyQQ 发消息用啊!呵呵
      

  11.   


    将上面的Keys.Alt改为Keys.Control就行了。
      

  12.   

    注册一个热键好了。
    keydown的话可能要焦点在那个控件上吧        [DllImport("user32")]
            public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);        [DllImport("user32")]
            public static extern bool UnregisterHotKey(IntPtr hWnd, int id);        protected override void WndProc(ref Message m)
            {
                switch (m.Msg)
                {
                    case 0x0312:
                        if (m.WParam.ToString() == "123")
                        {
                            this.Hide();
                        }
                        else if (m.WParam.ToString() == "456")
                        {
                            this.Visible = true;
                        }
                        break;
                }
                base.WndProc(ref m);
            }        private void BookShelf_Load(object sender, EventArgs e)
            {
                //register:press [H] key to hide,and press [S] key to show
                RegisterHotKey(this.Handle, 123, 1, Keys.H);
                RegisterHotKey(this.Handle, 456, 1, Keys.S);
                //这里1是shift,2是ctrl,0是两个都不要 
            }        private void BookShelf_FormClosed(object sender, FormClosedEventArgs e)
            {
                UnregisterHotKey(this.Handle, 123);
                UnregisterHotKey(this.Handle, 456);
            }
      

  13.   

    Right, 用api注册热键才能保证form没有焦点也能执行