当前位置:编程学习 > C#/ASP.NET >>

恼火,为什么不触发keydown事件

我在datagridview控件中注册keydown事件了,程序启动后按键盘毫无反应,为什么啊? --------------------编程问答-------------------- 试试keypress --------------------编程问答-------------------- 试试keypress --------------------编程问答-------------------- 我用以下代码实验,能引发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)
        {
        }
    }
--------------------编程问答-------------------- 我用以下代码实验,能引发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)
        {
        }
    }
--------------------编程问答-------------------- 我的代码

private void dgv_detail_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.D)
                MessageBox.Show("123","");
        }

执行OK. --------------------编程问答-------------------- 在窗口的Designer.cs文件中查找像下面这样的代码
this.dgv_detail.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dgv_detail_KeyDown);

看看委托的事件有没有? --------------------编程问答-------------------- 楼主把代码发出来大家看看哪边问题
不然这样大家怎么说呢 --------------------编程问答-------------------- 你是不是直接写的code代码,没有事件中添加对应的KEY_DOWN 事件呢~~

仔细看看~~

如果你没有添加的话,直接在  datagridview控件 的事件中(动作) 选择 keydown 就可以了。 --------------------编程问答-------------------- 在界面设计状态,选中dgv_detail,在属性窗口中,选择闪电图标的"事件",在对应的KeyDown选项中的右边框中双击,进行代码窗口,在光标指示处输入要在KeyDown事件中执行的代码即可. --------------------编程问答-------------------- 焦点在 dgv 才可以响应事件  你直接启动出来肯定是不行的。 --------------------编程问答-------------------- 在 Form_Load 事件里加入这个代码 

this.dgv_detail.TabIndex = 0; --------------------编程问答-------------------- KeyDown不行的话可以试一下PreviewKeyDown事件,这个事件更早发生, --------------------编程问答-------------------- KeyDown不行的话可以试一下PreviewKeyDown事件,这个事件更早发生,
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,