恼火,为什么不触发keydown事件
我在datagridview控件中注册keydown事件了,程序启动后按键盘毫无反应,为什么啊? --------------------编程问答-------------------- 试试keypress --------------------编程问答-------------------- 试试keypress --------------------编程问答-------------------- 我用以下代码实验,能引发KeyDown事件。你清理下代码,看看哪句话引发了问题。public partial class Form1 : Form--------------------编程问答-------------------- 我用以下代码实验,能引发KeyDown事件。你清理下代码,看看哪句话引发了问题。
{
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)
{
}
}
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#