高分求一简单的问题-------如何用回车键模拟TAB键?

jacobwc 2006-05-10 02:47:24
我在DATAGRID中用回车键模拟TAB键,在keydown事件中
写了private void dataGrid1_ondeydown(object sender,System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode==Keys.Enter)
e.KeyCode=Keys.Tab;

}
提示: 无法对属性或索引器“System.Windows.Forms.KeyEventArgs.KeyCode”赋值 -- 它是只读的
还有其他的办法嘛???

另外,如何在DATAGRID中用TAB键(或回车)跨多个单元格.
...全文
584 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacobwc 2006-05-11
  • 打赏
  • 举报
回复
谢谢chengbo1983(chengbo.net)
问题已经解决!
chengbo1983 2006-05-11
  • 打赏
  • 举报
回复
private 生产管理.CusGrid dataGrid1;
jacobwc 2006-05-11
  • 打赏
  • 举报
回复
知道了
申明错了
sorry
private CusGrid dataGrid1=new CusGrid();
jacobwc 2006-05-11
  • 打赏
  • 举报
回复
我知道你的意思,申请private System.Windows.Forms.CusGrid dataGrid1;
提示:类型或命名空间名称“CusGrid”在类或命名空间“System.Windows.Forms”中不存在(是否缺少程序集引用?)



using System;
using System.Windows.Forms;

namespace 生产管理
{
/// <summary>
/// CusGrid 的摘要说明。
/// </summary>
public class CusGrid:DataGrid
{
public CusGrid()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected override bool ProcessCmdKey( ref System.Windows.Forms.Message msg,System.Windows.Forms.Keys keyData )
{

if(msg.WParam.ToInt32() == (int) Keys.Enter)
{
SendKeys.Send("{TAB}");
return true;
}

return base.ProcessCmdKey(ref msg, keyData);

}



}
}
star0796 2006-05-11
  • 打赏
  • 举报
回复
这个问题在csdn问过不下20遍了,大哥们!
chengbo1983 2006-05-11
  • 打赏
  • 举报
回复
点到System.Windows.Forms.没出现CustGrid???
什么意思

我的意思是说,你不是写了一个继承至datagrid的custgrdi类吗
你声明控件的时候,不要声明datagrid的实例,声明custgrid的

然后使用它

不知道说清楚没有
jacobwc 2006-05-11
  • 打赏
  • 举报
回复
TO:chengbo1983(chengbo.net)

原来是System.Windows.Forms.DataGrid yourdatagird;
现在是ddddddddddddddd.CustGrid yourdatagrid;
对,我点到System.Windows.Forms.没出现CustGrid

哪儿错?
我新增了一个类,编译通过的.

jacobwc 2006-05-11
  • 打赏
  • 举报
回复
在DataGrid中的单元格之间切换用回车键来模拟TAB键.
就这么简单的事情
好像还是有点头痛.
chengbo1983 2006-05-11
  • 打赏
  • 举报
回复
public delegate bool DeleteColHandle();
public event DeleteColHandle DeleteCol;
不需要
PreProcessMessage也不用重写

我只是把我原来的代码粘贴过来了

原来是System.Windows.Forms.DataGrid yourdatagird;
现在是ddddddddddddddd.CustGrid yourdatagrid;

完全一样,除了已经用tab替换enter了
hmq1012 2006-05-11
  • 打赏
  • 举报
回复
你想达到怎样的目的啊?
jacobwc 2006-05-11
  • 打赏
  • 举报
回复
楼上的,你那个只是对dataGrid自身的KeyPress事件
hmq1012 2006-05-11
  • 打赏
  • 举报
回复
private void 回车改为Tab_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
//回车转为tab
if (e.KeyChar == '\r') SendKeys.Send("{Tab}");
}
jacobwc 2006-05-11
  • 打赏
  • 举报
回复
对了,怎么用这个重写的类?
我在定义dataGrid1对象的时候从这个类定义吗?
jacobwc 2006-05-11
  • 打赏
  • 举报
回复
重写了DataGrid类了
但是
这public delegate bool DeleteColHandle();
public event DeleteColHandle DeleteCol;
有什么用?
dlzhangln 2006-05-10
  • 打赏
  • 举报
回复
chengbo1983的方法可以试一试,或者用True DBGrid试一试,帮助文档做的很好,不会一查就OK了,这个肯定行。
dlzhangln 2006-05-10
  • 打赏
  • 举报
回复
呵呵,你那个方法肯定不行
zhoujijunnt 2006-05-10
  • 打赏
  • 举报
回复
刚才试了,我那方法不行。
zhoujijunnt 2006-05-10
  • 打赏
  • 举报
回复
要回家了,明天再来GZ!
chengbo1983 2006-05-10
  • 打赏
  • 举报
回复
public delegate bool DeleteColHandle();
public event DeleteColHandle DeleteCol;
chengbo1983 2006-05-10
  • 打赏
  • 举报
回复
自己写一个datagrid,重写ProcessCmdKey事件,然后用这个datagrid
加载更多回复(13)

111,125

社区成员

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

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

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