问下大伙,datagridview有没什么事件在录入单元格内容时按下空格键可以启动的?

lvyexiaozi 2008-06-19 11:44:25
我想实现在datagridview中,编辑单元格内容时,按下空格键可以:显示控件,模糊查询。
可是在keydown事件好像不支持,编辑的时候启动,EditingControlShowing也是一样
大佬们,帮帮忙
...全文
274 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qoushui 2011-07-04
  • 打赏
  • 举报
回复
ProcessCmdKey 不是事件,是一个可重载的方法
lvyexiaozi 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ydsunny 的回复:]
可通过重写dataGridView的ProcessCmdKey的事件实现:

C# code
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Back)
{
MessageBox.Show("按下了空格");
}

return base.ProcessCmdKey(ref msg, keyData);
}
[/Quote]


可是我只要datagridview里才响应。要怎么处理
九章落地 2008-06-19
  • 打赏
  • 举报
回复
可通过重写dataGridView的ProcessCmdKey的事件实现:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Back)
{
MessageBox.Show("按下了空格");
}

return base.ProcessCmdKey(ref msg, keyData);
}

chenshizhencong 2008-06-19
  • 打赏
  • 举报
回复
应该将datagridview所在的窗体的iskeypreview属性设置为true,才能响应datagridview中对应的键盘事件
lvyexiaozi 2008-06-19
  • 打赏
  • 举报
回复
自己顶一下。这个版块好热。
chenshizhencong 2008-06-19
  • 打赏
  • 举报
回复
设置datagridview的父窗体的keypreview属性为true
添加datagridview的键盘事件
private void datagridview_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
//要执行的动作
}
}
lvyexiaozi 2008-06-19
  • 打赏
  • 举报
回复
再顶一下。。。。。。。。。。。
lvyexiaozi 2008-06-19
  • 打赏
  • 举报
回复
control.ProcessCmdKey事件要怎么才能让datagridview识别?要在构造函数那加委托之类的么?不怎么会加
lvyexiaozi 2008-06-19
  • 打赏
  • 举报
回复
DataGridView里找不到ProcessCmdKey事件。
  public partial class my_cf : Form
{

public my_cf()
{

InitializeComponent();

}
int i=0;

private void richTextBox11_DoubleClick(object sender, EventArgs e)
{
if (i == 0)
{
richTextBox1.Height = 150;
i++;
}
else
{
richTextBox1.Height = 52;
i--;
}

}




private void dataGridView2_KeyPress(object sender, KeyPressEventArgs e)
{
//if (e.KeyChar.ToString() == Keys.Enter.ToString())
//{
// SqlConnection aa = new sqlconfig().conn();//打开数据库连接
// string ypxx = "select YPMC AS 药品名称,YPGG AS 药品规格 from cc_yp_KCMX where YPMC like '" + dataGridView2.CurrentRow.Cells[1].Value.ToString() + "%'";
// SqlDataAdapter myada = new SqlDataAdapter(ypxx, aa);
// DataSet mycf = new DataSet();
// myada.Fill(mycf, "ypmc");
// dataGridView3.Visible = true;
// dataGridView3.DataSource = mycf.Tables["ypmc"].DefaultView;
// aa.Dispose();
// myada.Dispose();
//}
}


public partial class DataGridView2 : DataGridView
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Space)
{
MessageBox.Show("按下了空格");
}

return base.ProcessCmdKey(ref msg, keyData);
}

}


这样不行窝。
九章落地 2008-06-19
  • 打赏
  • 举报
回复
你重写dataGridView控件的ProcessCmdKey事件,就可以了


public partial class DataGridViewX:DataGridView
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Back)
{
MessageBox.Show("按下了空格");
}

return base.ProcessCmdKey(ref msg, keyData);
}

}

生财 2008-06-19
  • 打赏
  • 举报
回复
那么对 textbox 用JS 来写函数吧
生财 2008-06-19
  • 打赏
  • 举报
回复
那么对 textbox 用JS 来写函数吧
lvyexiaozi 2008-06-19
  • 打赏
  • 举报
回复
自己再顶一下。确实不会
lvyexiaozi 2008-06-19
  • 打赏
  • 举报
回复
小强同志,我只要datagridview里响应,要怎么做才好。用你方法现在是窗体所有控件,都响应了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧