Max_QlQ 2023-06-25 10:51 采纳率: 42.9%
浏览 203
已结题

C# VS中使用reogrid插件如何时时获取选中单元格的坐标位置

C# VS中使用reogrid插件如何时时获取选中单元格的坐标位置

目标是:在单元格右键,这时单元格处于选中状态,可以得到行号和列号,判断行号和列号的范围,决定执行右键弹出菜单。(通过添加 ContextMenuStrip,已经可以实现右键弹出,不想让它在任何一个单元格右键都弹出,是否还有更好的方法,请指导)

// 以下是创建右键菜单对象-----------------------------------------
            var contextMenu = new ContextMenuStrip();

            // 创建菜单项
            var menuItem1 = new ToolStripMenuItem("等值向右填充");
            var menuItem2 = new ToolStripMenuItem("等距填充");
            var menuItem3 = new ToolStripMenuItem("衰减填充");

            // 将菜单项添加到右键菜单
            contextMenu.Items.Add(menuItem1);
            contextMenu.Items.Add(menuItem2);
            contextMenu.Items.Add(menuItem3);
            // 将右键菜单关联到 ReoGrid 控件
            reoGridControl1.ContextMenuStrip = contextMenu;

  • 写回答

7条回答 默认 最新

  • 急速光粒 2023-06-25 14:50
    关注

    可以重载一下ReoGridControl,实现鼠标点击和右键菜单的控制。将控件类型改成MyGrid即可,
    private MyGrid reoGridControl1;
    其他不变。测试可用:

    img

        class MyGrid :  unvell.ReoGrid.ReoGridControl
        {
            ContextMenuStrip m_menu;
            //
            // 摘要:
            //     Overrides mouse-down events
            //
            // 参数:
            //   e:
            //     Argument of mouse pressing event.
            protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
            {
                if (m_menu == null)
                    m_menu = ContextMenuStrip;
    
                ContextMenuStrip = null;// contextMenu;
                base.OnMouseDown(e);
    
                if (e.Button == MouseButtons.Right)
                {
                    // 获取选中的单元格
                    var cellPos = CurrentWorksheet.FocusPos; 
                    if (cellPos != null)
                    {
                        // 获取选中单元格的行号和列号
                        var row = cellPos.Row;
                        var col = cellPos.Col;
    
                        // 判断行号和列号的范围,决定是否执行右键弹出菜单
                        if (row >= 0 && row < 2 && col >= 0 && col < 2)
                        {
                            // 执行右键弹出菜单的逻辑
                            ContextMenuStrip = m_menu;
                        }
                    }
                    if(ContextMenuStrip != null)
                        base.OnMouseDown(e);
                }
            }
    
        }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 7月3日
  • 已采纳回答 6月25日
  • 创建了问题 6月25日