C# DataGridView,右键单击RowHeader时显示右键菜单怎么做?我不是要把右键菜单加到全部的DataGridView .. 只有选 择了行头的时候,才加。。
或者 是怎么判断鼠标点击的是行头。。
private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridView myGrid = sender as DataGridView;
System.Windows.Forms.DataGridView.HitTestInfo hti;
hti = myGrid.HitTest(e.Location.X, e.Location.Y);
if( hti.Type == DataGridViewHitTestType.RowHeader )
{
}
}
以上的代码 。。不管是点击 的行头,,还是单元格。。hti.Type 一直都是TopLeftHeader求解答
或者 是怎么判断鼠标点击的是行头。。
private void dataGridView1_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridView myGrid = sender as DataGridView;
System.Windows.Forms.DataGridView.HitTestInfo hti;
hti = myGrid.HitTest(e.Location.X, e.Location.Y);
if( hti.Type == DataGridViewHitTestType.RowHeader )
{
}
}
以上的代码 。。不管是点击 的行头,,还是单元格。。hti.Type 一直都是TopLeftHeader求解答
解决方案 »
- 我写了一个用户控件,页面调用多次,但是总是只能正常显示第一个,帮我找找一下错误.
- 如何使用C#在.net环境下实现Tab控件
- 请问下vs2008 自带的Ajax 和 Extjs 在客户端展现各自的优缺点是什么呢?
- 关于c#窗口form顺序问题!
- 弹出的窗体置于应用程序的最顶层(激活)???
- 求解密的哈希算法例子
- 求WORD文档导出PDF的代码
- [测验]C# 3.0新特性也已经基本定稿了,各种资料层出不穷,但大家对C# 2.0的新特性有多少了解呢?测验一下。
- 数字图象处理的一些问题
- VS.Net的正式版是不是发布了?有人说是最终测试版,有人说是...我越看越糊涂,明白人说个话!
- 想了想,未免也太搞笑了吧
- 迷惑!无法在 System.Boolean 和 System.String 上执行“=”操作。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if( e.ColumnIndex==-1)
{
MessageBox.Show("这里是行头");
}
}
把右键菜单与datagridview绑定,右键时判断是否行头,如果是行头show
{
if(e.Button==MouseButtons.Right)
{
//加入显示右键弹出菜单
}
}
而且,CellClick 是不响应右键的,所以,只有在 CellMouseClick 事件中才能响应右键.(RowHeaderMouseClick 也有响应,但是不知道为什么,我的 VS2005 没有反应,所以不推荐使用)
private void dgv_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
// 判断是否右键点击
if (e.Button == MouseButtons.Right)
{
// 得到点击所在的行和列信息。相关函数查 MSDN
DataGridView.HitTestInfo hitinfo = dgv_verify.HitTest(e.X, e.Y);
// 如果 RowIndex < 0,就是标题行了。
if (hitinfo.RowIndex < 0)
{
// 如果你只要指定的列显示菜单,则加入对 hitinfo.ColumnIndex 的判断
contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}
}
}===============================================================
以上代码经过测试,在 VS2005 和 VS2008 下运行正常。
有什么问题,再问我吧。
,怎么还那么肯定别人代码都未经测试!不是前后矛盾吗?!!
你的代码没有响应:要么是给datagridview的ContextMenu 手工设置了上下文菜单,
要么给FormContextMenu 手工设置了上下文菜单!你把这个属性去掉试试,会不会响应代码!
下次说话,不要说的这么满!
{
if (e.ColumnIndex == -1)
{
e.ContextMenuStrip = contextMenuStrip1;
}
}
{ if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
int x = e.Location.X;
int y = e.Location.Y;
for (int i = 0; i < e.ColumnIndex; i++)
x += this.Columns[i].Width; headercontextMenuStrip.Show(this, x, y);
}
}