是这样的,我已经通过程序实现将某控件全屏显示。然后,我想通过按下“esc”键,使窗体还原。事先,已经将窗体的KeyPreview属性设置为true。代码:private void Form1_keypress(object sender, KeyPressEventArgs e)
        {
            if (Chr(e.KeyChar)==Keys.Escape.ToString())
            {
                splitContainer1.SplitterDistance = 220;
                控件1.Height = splitContainer1.Panel2.Height;
                menuStrip1.Show();
            }
        }
        public static string Chr(int ascii)
        {
            if (ascii >= 1 && ascii <= 255)
            {
                ASCIIEncoding asciiEncoding = new ASCIIEncoding();
                byte[] byteArray = new byte[] { (byte)ascii };
                string str = asciiEncoding.GetString(byteArray);
                return (str);
            }
            else
            {
                return "1";
            }
        }问题是,我按下键,该事件不响应。Visual Studio 2010窗体 响应键盘事件

解决方案 »

  1.   

    为啥还用tostring?
    直接e.Key==Keys.Escape判断吧
      

  2.   

    不是没进去 而是你这个方法有问题:
        public static string Chr(int ascii)
            {
                if (ascii >= 1 && ascii <= 255)
                {
                    ASCIIEncoding asciiEncoding = new ASCIIEncoding();
                    byte[] byteArray = new byte[] { (byte)ascii };
                    string str = asciiEncoding.GetString(byteArray);
                    return (str);
                }
                else
                {
                    return "1";
                }
            }
      

  3.   

    没有e.Key
    主要是根本这个事件没有响应到。调试时,无法进入到该事件。
      

  4.   

    主要是Form1_keypress(object sender, KeyPressEventArgs e)这个事件没有响应到。调试时,无法进入到该事件。后面的方法又是其次。
      

  5.   

    窗体属性KeyPreview 是否设置为true
      

  6.   

    在KeyDown中设置e.keyChar
    需要窗体激活
    经验之谈,这种方法很简单好用,请给分
      

  7.   

    Form1_keypress一看就知道你是copy的   keypress   实际点击窗体事件进去是KeyPress 窗体属性上方标题栏有 闪电状图标 为事件   找到KeyPress 事件  或者KeyDown事件双击即可写事件内过程
    KeyDown可写如下进行判断
    if (e.KeyCode == Keys.Escape)
    {}
      

  8.   

    你搞个独立的窗口项目只把你这句话加进去 你看能不能进去
    private void Form1_keypress(object sender, KeyPressEventArgs e)
            {
                弹框
            }
      

  9.   

    我是在窗体事件中,在KeyPress事件处,写下事件名称,双击得到的事件过程,但是问题是窗体无法获取到焦点。
    我这样尝试了下,如果,我在初始化窗体时,将窗体中的其他控件的Enabled设置为false,按下esc键,可以进入到KeyPress事件中。然而,我不能在初始化将其他控件Enabled设置为false因此我在另一个方法中,由该方法触发得到其他控件Enabled为false,结果仍然无法进入到KeyPress事件中。
    所以,我觉得原因就是,窗体没有得到焦点。但是我不知道如何得到。
      

  10.   

    重装VS?+1
    捕获窗体或控件的键盘按下事件都是keydown事件,如果不知道根据英文翻译也能翻译下来啊
      

  11.   

    我是在窗体事件中,在KeyPress事件处,写下事件名称,双击得到的事件过程,但是问题是窗体无法获取到焦点。
    我这样尝试了下,如果,我在初始化窗体时,将窗体中的其他控件的Enabled设置为false,按下esc键,可以进入到KeyPress事件中。然而,我不能在初始化将其他控件Enabled设置为false因此我在另一个方法中,由该方法触发得到其他控件Enabled为false,结果仍然无法进入到KeyPress事件中。
    所以,我觉得原因就是,窗体没有得到焦点。但是我不知道如何得到。焦点textbox  应该不会触发窗体keypress事件在textbox keypress事件 使用之前窗体的keypress事件即可
      

  12.   

    KeyDowen事件能触发吗?
    激活窗体能不能用this.Form.Activate()?