我在datagridview控件中注册keydown事件了,程序启动后按键盘毫无反应,为什么啊?

解决方案 »

  1.   

    我用以下代码实验,能引发KeyDown事件。你清理下代码,看看哪句话引发了问题。
        public partial class Form1 : Form
        {
            public Form1()
            {
                dataGridView1 = new DataGridView();
                ((ISupportInitialize) (dataGridView1)).BeginInit();
                SuspendLayout();
                // 
                // dataGridView1
                // 
                dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                dataGridView1.Location = new Point(0, 0);
                dataGridView1.Name = "dataGridView1";
                dataGridView1.RowTemplate.Height = 23;
                dataGridView1.Size = new Size(240, 150);
                dataGridView1.TabIndex = 0;
                dataGridView1.KeyDown += dataGridView1_KeyDown;
                // 
                // Form1
                // 
                AutoScaleDimensions = new SizeF(6F, 12F);
                AutoScaleMode = AutoScaleMode.Font;
                ClientSize = new Size(284, 262);
                Controls.Add(dataGridView1);
                Name = "Form1";
                Text = "Form1";
                ((ISupportInitialize) (dataGridView1)).EndInit();
                ResumeLayout(false);
            }        private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
            {
            }
        }
      

  2.   

    我用以下代码实验,能引发KeyDown事件。你清理下代码,看看哪句话引发了问题。
        public partial class Form1 : Form
        {
            public Form1()
            {
                dataGridView1 = new DataGridView();
                ((ISupportInitialize) (dataGridView1)).BeginInit();
                SuspendLayout();
                // 
                // dataGridView1
                // 
                dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                dataGridView1.Location = new Point(0, 0);
                dataGridView1.Name = "dataGridView1";
                dataGridView1.RowTemplate.Height = 23;
                dataGridView1.Size = new Size(240, 150);
                dataGridView1.TabIndex = 0;
                dataGridView1.KeyDown += dataGridView1_KeyDown;
                // 
                // Form1
                // 
                AutoScaleDimensions = new SizeF(6F, 12F);
                AutoScaleMode = AutoScaleMode.Font;
                ClientSize = new Size(284, 262);
                Controls.Add(dataGridView1);
                Name = "Form1";
                Text = "Form1";
                ((ISupportInitialize) (dataGridView1)).EndInit();
                ResumeLayout(false);
            }        private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
            {
            }
        }
      

  3.   

    我的代码private void dgv_detail_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.D)
                    MessageBox.Show("123","");
            }执行OK.
      

  4.   

    在窗口的Designer.cs文件中查找像下面这样的代码this.dgv_detail.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dgv_detail_KeyDown);
    看看委托的事件有没有?
      

  5.   

    你是不是直接写的code代码,没有事件中添加对应的KEY_DOWN 事件呢~~仔细看看~~如果你没有添加的话,直接在  datagridview控件 的事件中(动作) 选择 keydown 就可以了。
      

  6.   

    在界面设计状态,选中dgv_detail,在属性窗口中,选择闪电图标的"事件",在对应的KeyDown选项中的右边框中双击,进行代码窗口,在光标指示处输入要在KeyDown事件中执行的代码即可.
      

  7.   

    焦点在 dgv 才可以响应事件  你直接启动出来肯定是不行的。
      

  8.   

    在 Form_Load 事件里加入这个代码 this.dgv_detail.TabIndex = 0;
      

  9.   

    KeyDown不行的话可以试一下PreviewKeyDown事件,这个事件更早发生,
      

  10.   

    KeyDown不行的话可以试一下PreviewKeyDown事件,这个事件更早发生,