当前位置:编程学习 > C#/ASP.NET >>

C# datagridview 右键菜单

要实现以下功能
1、当datagridview有数据时,右击菜单显示三个选项;当datagridview没有数据时,右击空白处显示一个选项。
2、点击列头不显示右键菜单。
3、列头禁止排序。

现在不知道在datagridivew有数据时 右击空白处的事件怎么拿到 ,求助! --------------------编程问答-------------------- mouseclick中,判断是否右键 --------------------编程问答--------------------
引用 1 楼 bdmh 的回复:
mouseclick中,判断是否右键

这个能判断是否为右键,现在不知道怎么判断是否点击的是空白处,比如有三条数据 怎么区别右击的时候是点击的数据还是datagridview的空白地方 --------------------编程问答-------------------- 没看很懂,contextMenuStrip控件,然后判断datagridview是否有数据
右击空白处的事件是指什么? --------------------编程问答-------------------- 生成MouseClick事件,然后判断是否是右键。只够再判断鼠标点击的单元格是否为空,为空显示一个菜单,不为空判断单元格的索引e.Index是否等于0。个人意见要是我会这么做的,希望对你有用 --------------------编程问答--------------------
如上图所示

请高手指点 --------------------编程问答-------------------- 用mousedown事件
先计算datagridview最后一行的高度:行数乘以行高H
然后计算点击时鼠标的坐标Y
判断 Y<=H 调出菜单1 Y>H 调出菜单2 --------------------编程问答-------------------- 代码

        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {
            int h = (dataGridView1.Rows.Count + 1) * 21;
            int y = e.Y;
            if (y <= h)
            {
                dataGridView1.ContextMenuStrip = contextMenuStrip1;
            }
            else
            {
                dataGridView1.ContextMenuStrip = contextMenuStrip2;
            }
        }
--------------------编程问答--------------------
引用 7 楼 stiff_neck 的回复:
代码
C# code?12345678910111213        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)        {            int h = (dataGridView1.Rows.Count + 1) * 21;            int ……


如果行变的宽度用户调了呢?*21这样就产准确了吧  期待合理的解决方法  --------------------编程问答-------------------- 行高设置成用户可以调么,有什么意义么,很少见啊 --------------------编程问答-------------------- 如果设置成可调的话,高度计算改成循环行数求和就好了 --------------------编程问答--------------------
引用 10 楼 stiff_neck 的回复:
如果设置成可调的话,高度计算改成循环行数求和就好了


找到办法了,但是不是这个 --------------------编程问答-------------------- 除
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,