Ctrl一般按住不动的,我觉得你还是 使用keydown event. 在keydown中检测是否Ctrl, Alt按下,如果按下,显示插入Ctrl或者Alt

解决方案 »

  1.   


    不是自己认为难的东西就真的很难。
    建议在csdn少用一些这样的词汇。首先把textbox的 tabstop 设为flaseprivate void textBox1_KeyUp(object sender, KeyEventArgs e)
            {
                if (e.KeyValue == 16 || e.KeyValue == 17 || e.KeyValue == 18)
                    return;
                presskey = e.KeyValue;            textBox1.Text = presskey.ToString();
                label3.Text = e.KeyData.ToString() + "键";
            }
            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                e.SuppressKeyPress = true;
                checkBox1.Checked = e.Control;
                checkBox2.Checked = e.Shift;
                checkBox3.Checked = e.Alt;
            }        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if (keyData == Keys.Tab && textBox1.Focused)
                {
                    //MessageBox.Show("ok");
                    return true;
                }
                //如果想要焦点保持在原控件则返回true
                return false;
            }代码大概是这样子
    界面大概是这样子
      

  2.   

    public 一个公共string变量,每keypress一次 就拼接一次变量,再赋值给text
      

  3.   

    http://www.codeproject.com/Articles/15085/A-simple-hotkey-selection-control-for-NET