问题一、KeyDown、KeyPress、KeyUp这三个事件,响应顺序为KeyDown>KeyPress>KeyUp,KeyDown最先响应。
问题二、三、四、看看http://expert.csdn.net/Expert/topic/1609/1609568.xml?temp=.3233148

解决方案 »

  1.   

    感谢楼上,针对问题一,我想不是我要的答案,你说的和我一样,我想问为什么实际上出来的MessageBox测试和帮助上的不一样。
    你链接的帖子我以前就看过了,我认为说明不了我想要问的问题。
      

  2.   

    顺序是:KeyPress事件比KeyDown事件晚发生。
      

  3.   

    用一个全局变量试,在KeyPress加1,在KeyDown中加1并分别赋给一个局部变量。
    在MessageBox中将这个结果显示,看谁是2,谁是3。
      

  4.   

    以下是捕获“Ctrl+s”的方法,如有错误和不足,请指正:
    <INPUT type="text" id="ttt" title="2003-4-24" onkeydown="press(this);return false;" style="WIDTH: 120px" value="" name="text1">
    <script>
    function press(obj)
    {
    if(event.ctrlKey&&event.repeat)
    {
    if(event.keyCode == 83)
    {
    alert("ctrl + s");
    }
    }
    }
      

  5.   

    谢谢楼上,虽然你写的是javascript代码,不是.net中的。但是我想在C#中实现。还望帮忙!
      

  6.   

    private void button1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) {
    if(e.KeyChar == (char)19){ //CTRL+S
    MessageBox.Show("给分");
    }
    }private void button1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
    if (e.KeyData == (Keys.Control | Keys.S)){
    MessageBox.Show("给分");
    } if (e.KeyCode == Keys.S){
    MessageBox.Show("给分");
    }
    }
      

  7.   

    呵呵,ArLi2003(阿利,失业+失恋 努力中) 已经将2。4问题解决了,哪位仁兄仔细的说一下Modifiers的功能,即刻结贴!
      

  8.   

    public System.Windows.Forms.Keys Modifiers [  get]
        System.Windows.Forms.KeyEventArgs 的成员获取System.Windows.Forms.Control.KeyDown或System.Windows.Forms.Control.KeyUp事件的修饰符标志。这指示曾按下哪一个修饰符键(CTRL、SHIFT 和 ALT)的组合。
    private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
    Keys key=e.Modifiers;
    if(key==Keys.Shift)
    {
    MessageBox.Show("按了shift键");
    }
    else if(key==Keys.Control)
    {
    MessageBox.Show("按了ctrl键");
    }
    else if(key==Keys.Alt)
    {
    MessageBox.Show("按了alt键");
    }
    }
      

  9.   

    呵呵,楼上的说法很对,但是你发现没有,当我在前面对KeyData进行捕捉组合键之后,再对Modifiers属性访问就得不到信息了。不管怎样,谢谢诸位,结贴!