社区
C#
帖子详情
请教关于 DataGridView 右键菜单
chencang
2009-04-29 01:45:12
我在 WinForm 中的 DataGridView 上关联右键菜单,实现批量修改记录中的某些字段值
问题是:如何使得只有在选中2条以上记录,并在记录内容上点右键才弹出菜单,也就是说点击列头和行首不要弹出,只选中一条记录时不弹出?
呼叫高手。。。。
...全文
745
7
打赏
收藏
请教关于 DataGridView 右键菜单
我在 WinForm 中的 DataGridView 上关联右键菜单,实现批量修改记录中的某些字段值 问题是:如何使得只有在选中2条以上记录,并在记录内容上点右键才弹出菜单,也就是说点击列头和行首不要弹出,只选中一条记录时不弹出? 呼叫高手。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
笑歌自若
2012-10-22
打赏
举报
回复
Bensson正确!+1
chencang
2009-04-29
打赏
举报
回复
Bensson正确,谢谢!!
Bensson
2009-04-29
打赏
举报
回复
this.contextMenuStrip1.Show(this.tblMtrlDetailDataGridView, e.Location); // new Point(e.X, e.Y) 也不行
替换为:
int cellX = tblMtrlDetailDataGridView.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).X;
int cellY = tblMtrlDetailDataGridView.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Y;
this.contextMenuStrip1.Show(this.tblMtrlDetailDataGridView, new Point(cellX + e.X, cellY + e.Y));
happy664618843
2009-04-29
打赏
举报
回复
顶顶!
chencang
2009-04-29
打赏
举报
回复
受1楼2楼的启发,代码改为:
if (e.Button == MouseButtons.Right) // 右键
{
if (this.tblMtrlDetailDataGridView.SelectedRows.Count > 1 && e.RowIndex >= 0 && e.ColumnIndex >= 0 && tblMtrlDetailDataGridView.Rows[e.RowIndex].Selected) // 选中记录超过1条,点击非列头行首,点击被选中行
{
this.contextMenuStrip1.Show(this.tblMtrlDetailDataGridView, e.Location); // new Point(e.X, e.Y) 也不行
}
else
{
this.contextMenuStrip1.Hide();
}
}
基本成功,可惜弹出菜单定位有问题,离鼠标右击的位置差距很大
高手继续指点。。。。
songjun174
2009-04-29
打赏
举报
回复
判断选择的行号是0还是1或者更多
如果是0,1则不弹出对话框
否则弹出对话框
也就是所谓的右键选择
maplesept
2009-04-29
打赏
举报
回复
int _rowIndex=-1;//选中行的行号
private void dataGridViewAPStatus_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (Source.isBatchShow == 0)
{
_rowIndex = this.dataGridView1.HitTest(e.X, e.Y).RowIndex;
int selectedCols=0;
for(int i=0;i<dataGridView1.Rows.count;i++)
{
if(this.dataGridView1.Rows[i].Cell[0].Value!=null&&(bool)this.dataGridView1.Rows[i].Cell[0].Value==true)
{
selectedCols++;
}
}
if (_rowIndex != -1&&selectedCols)
{
//显示右键菜单
this.contextMenuStrip1.Show(this.dataGridView1, new Point(e.X, e.Y));
}
}
}
}
要这样实现就不能把菜单用dataGridView1的ContextMuneStript属性了。只能获取右键事件了
另外我一般是在选中某行(第一列是复选框的选中)时就把选中的行存放到列表中,省的每次都循环耗资源
DataGridView
中
右键
弹出 编辑修改等
菜单
由于默认情况下`
DataGridView
`的`RowContextMenuStripNeeded`事件只在设置了`DataSource`属性或`VirtualMode`属性为`true`时才会触发,因此对于非数据行(如表头)的
右键
菜单
,需要通过重写`OnMouseDown`方法来自...
C#我设置好
右键
菜单
以后,怎么样获取
右键
点击的是哪一单元格
在C#编程中,处理
DataGridView
控件上的
右键
菜单
点击事件是常见的应用场景之一。当用户在
DataGridView
中的某个单元格上点击
右键
时,系统通常会弹出一个上下文
菜单
(context menu),允许用户执行特定的操作。为了实现...
DataGridView
右键
菜单
自定义显示及隐藏列功能
WinForm程序中表单的列可自定义显示及隐藏,是一种常见的功能,对于用户体验来说是非常好的。笔者经过一段时间的摸索,终于实现了自己想要的功能及效果,现记录一下过程: 1、新建一个自定义控件,命名为:...
C# 实现
dataGridView
选中一行
右键
出现
菜单
的示例代码
`
DataGridView
`用于展示数据,而`ContextMenuStrip`则用于显示
右键
菜单
。在设计界面时,可以通过属性窗口设置这两个控件的相关属性。 对于`
dataGridView
1`,我们需要设置以下属性: 1. `SelectionMode` 属性设置为 ...
Datagridview
使用技巧(9)
Datagridview
的
右键
菜单
可以通过设置ContextMenuStrip对象来控制
DataGridView
的
右键
菜单
的显示。
DataGridView
Column的ContextMenuStrip属性设定除了列头以外的单元格的
右键
菜单
。
DataGridView
Row的ContextMenuStrip属性设定除了行头以外...
C#
111,126
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章