如何禁止DataGrid中网格的右键功能

wangjisheng1 2006-06-19 10:27:02
我为DataGrid添了一个弹出菜单,单右键DataGrid时可以弹出这个菜单,但是当焦点进入到DataGrid的某个网格时,再右键就弹出了系统自带的复制、粘贴、删除的菜单,这是我还想让它弹出我定义的菜单
...全文
142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Knight94 2006-06-19
  • 打赏
  • 举报
回复
要处理不是这么简单,因为当cell获得焦点,此时的控件是TextBox,而对于TextBox来说默认的contextmenu就是复制之类的操作。

要想进行转换,需要重载DataGridTextBoxColumn,例如:
public class myTextBoxColumn : DataGridTextBoxColumn
{
public myTextBoxColumn( ContextMenu mnuContext) : base()
{
this.TextBox.ContextMenu = mnuContext;//Set new context menu here
}
}

然后添加DataGrid的TableStyle,然后用myTextBoxColumn替换DataGridTextBoxColumn来绑定字段。
wangjisheng1 2006-06-19
  • 打赏
  • 举报
回复
我在MouseDown中是这样处理的,我在MouseDown,判断如果是右键就让我的菜单弹出,但是还是不可以
wangjisheng1 2006-06-19
  • 打赏
  • 举报
回复
我在OnMouseDown中处理一下,但是还是不可以。
fengfangfang你能说的再清楚一些吗?
fengfangfang 2006-06-19
  • 打赏
  • 举报
回复
OnKeyDown
事件中处理
wangjisheng1 2006-06-19
  • 打赏
  • 举报
回复
用的,不过这样也比我以前省事了一些,
我以前是为每个column的Contextmenu赋值,现在定义和赋值两步合成一步,还是省事了,呵呵,更重要的是多了一种解决问题的途径。多谢了!
lowtemper 2006-06-19
  • 打赏
  • 举报
回复
不用吧,自己写了一个columnstyle的话,只要你的column都用这个style就可以了,不用每次都去new的
Knight94 2006-06-19
  • 打赏
  • 举报
回复
这是没办法的,毕竟当cell获得焦点后,active control为textbox,而.net的textbox继承了系统contextmenu。

所以你从Datagrid中是无法直接屏蔽的
wangjisheng1 2006-06-19
  • 打赏
  • 举报
回复
谢谢了knight94(愚翁)
不过这样的,如果我的Datagrid 有十列的话,我就要写十次new myTextBoxColumn (mnuContext),多写十个mnuContext。能不能在添加Tabelstyie 的时候出muCountext,这样就省事多了,我是不是很懒啊 呵呵
因为我的项目中有不少窗体都用了DataGrid,每个DataGrid又有多列。我现在这样修改起来还是有些麻烦。

110,537

社区成员

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

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

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