恼火,为什么不触发keydown事件 我在datagridview控件中注册keydown事件了,程序启动后按键盘毫无反应,为什么啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用以下代码实验,能引发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事件,这个事件更早发生, 求助 C#怎么获得当前屏幕光标的位置,然后在光标的位置上输入想输入数据 请教大虾:如何使用OpenFileDialog,通过选择快捷方式,打开网上的文件? sql2005数据库定时自动备份错误 怎样在默认的浏览器(比如Maxthon)中打开webbrowser中的链接? 请教各位朋友,代码风格问题。 求正则表达式! 以8和9开头的6位数字 关于C#的绘图功能 不知道这样写多线程界面更新程序是否安全? datagrid上的事件 如何准确测试程序运行时间? 数组对象作为实参传递给Array问题。
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)
{
}
}
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)
{
}
}
{
if (e.KeyCode == Keys.D)
MessageBox.Show("123","");
}执行OK.
看看委托的事件有没有?