RT

解决方案 »

  1.   

    KeyDown 的 与……我卖萌了
      

  2.   


    private void TextBoxSend_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    if (CheckBoxHexSend.Checked == true) {
    //文本框防止非法字符输入:
    //只输入整数和A-F:及 空格
    //3 - ctrl + c 复制
    //22 - ctrl + v 粘贴
    //24 - ctrl + x 剪切
    //13 回车键
    //17 控制键,允许复制
    //8 退格键
    //32 空格键
    short KeyAscii = Strings.Asc(e.KeyChar); switch (KeyAscii) {
    case 13:
    case 32:
    case 8:
    case Strings.Asc("0"): // TODO: to Strings.Asc("9")
    case Strings.Asc("A"): // TODO: to Strings.Asc("F")
    case Strings.Asc("a"): // TODO: to Strings.Asc("f")
    //加回车键
    break;
    // e.KeyChar = Chr(KeyAscii)
    default:
    KeyAscii = 0;
    //按键都屏蔽
    break;
    }
    if (KeyAscii == 0) {
    e.Handled = true;
    } }}
      

  3.   

    查对应事件的事件参数eventargs
      

  4.   

    event事件里面逐个判断键值不可以吗
      

  5.   

    组合键可分为热键和快捷键。其中快捷键的上面几位讲的都可以实现,但这需要我们的程序在最前的窗体,
    一旦失去了焦点就没有用了,这时我们就需要用到热键,就类似你在网页上Ctrl+C复制了一段文字,
    然后Ctrl+V粘贴到一个记事本里,这样我们要在Form_Activated事件中注册好热键,
    然后再重载重载From中的WndProc函数:/// 
    /// 监视Windows消息
    /// 重载WndProc方法,用于实现热键响应
    /// 
    /// 
    protected override void WndProc(ref Message m)
    {
        const int WM_HOTKEY = 0x0312;
        //按快捷键 
        switch (m.Msg)
        {
            case WM_HOTKEY:
                switch (m.WParam.ToInt32())
                {
                    case XXX:    //之前注册的热键
                        //此处填写响应代码         
                        break;
                }
            break;
        }
        base.WndProc(ref m);
    }经过这样的注册,我们运行程序后,就算把界面最小化或者隐藏起来,你都可以执行相应的热键操作。
      

  6.   


    private void textBox1_KeyUp(object sender, KeyEventArgs e)
            {
                if (e.Control && e.KeyCode == Keys.V)
                {     
                }
            }
      

  7.   

    private   void   Form1_KeyDown(object   sender,   System.Windows.Forms.KeyEventArgs   e) 

    //按下alt + s
    if((e.Alt)&&(e.KeyCode==System.Windows.Forms.Keys.S)) 

    MessageBox.Show( "按下了alt + S "); 

    //按下alt + shift + s
    if((e.Alt)&&(e.KeyCode==System.Windows.Forms.Keys.S)&&(e.Shift)) 

    MessageBox.Show( "按下了alt + Shift + S "); 

    //其他类似
    }