VS C# 中如何在Reogrid表格中设置右键选项功能

VS C# 中如何在Reogrid表格中设置右键选项功能

目标:在某一单元格右键,弹出选项菜单,选中相应菜单执行相应程序。例如,在一行的第一个单元格,设置一个数值,然后在这个单元格右键,弹出三个选项,选项1是等值向右填充,将包括第一个单元格在内的20个单元格填充值,选项2等距填充,如每5年提示输入一个值,选项3是衰减填充,提示输入一个系数,后面19个单元格按系数相乘衰减。

放一个 ContextMenuStrip
在 Reogrid 的 Mouse_Up 里面判断 Button 为右键,就弹出

https://blog.csdn.net/kouzhili1792/article/details/107092019

来自GPT的回答:

要在 ReoGrid 表格中实现右键选项功能,您可以按照以下步骤进行操作:

首先,确保您已经在项目中引用了 ReoGrid 控件。您可以通过 NuGet 包管理器或手动下载和添加引用来获取 ReoGrid 控件。

在您的 C# 代码中,创建一个 ReoGrid 控件对象并将其添加到您的窗体或控件中。例如,如果您使用的是 Windows Forms 应用程序,可以在窗体的构造函数或加载事件中添加以下代码:

csharp
Copy code
using unvell.ReoGrid;

// 创建 ReoGrid 控件对象
var reoGridControl = new ReoGridControl();

// 设置控件的位置和大小
reoGridControl.Location = new Point(10, 10);
reoGridControl.Size = new Size(400, 300);

// 将控件添加到窗体中
this.Controls.Add(reoGridControl);
请确保您已经在项目中添加了适当的命名空间引用。

在适当的位置(例如窗体的加载事件或控件初始化方法)中,添加代码以创建和设置右键菜单。您可以使用 ContextMenuStrip 控件来创建右键菜单,并将其关联到 ReoGrid 控件的 ContextMenuStrip 属性上。以下是示例代码:
csharp
Copy code
using System.Windows.Forms;

// 创建右键菜单对象
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 控件
reoGridControl.ContextMenuStrip = contextMenu;
为每个菜单项的 Click 事件添加相应的处理程序。根据您的需求,在单击菜单项时执行相应的程序逻辑。以下是示例代码:
csharp
Copy code
// 菜单项1的点击事件处理程序
menuItem1.Click += (sender, e) =>
{
    // 执行等值向右填充的逻辑
    // 包括第一个单元格在内的20个单元格填充值
};

// 菜单项2的点击事件处理程序
menuItem2.Click += (sender, e) =>
{
    // 执行等距填充的逻辑
    // 如每5年提示输入一个值
};

// 菜单项3的点击事件处理程序
menuItem3.Click += (sender, e) =>
{
    // 执行衰减填充的逻辑
    // 提示输入一个系数,后面19个单元格按系数相乘衰减
};
在每个点击事件处理程序中,您可以编写适当的代码以执行相应的填充逻辑。

请注意,上述代码仅提供了一个基本的示例,您需要根据具体的需求和 ReoGrid 控件的使用方式进行适当的调整。

问题已经解决,请参照你的问题,按照里面的解决方式添加对不同单元格添加不同的菜单项:
https://ask.csdn.net/questions/7969328/54250987?spm=1001.2014.3001.5504

C#开发学习笔记:GridControl添加右键快捷菜单
可以参考下

在ReoGrid表格中设置右键选项功能,你可以按照以下步骤进行操作:

  1. 首先,确保你已经在Visual Studio中引用了ReoGrid库,并将其添加到你的项目中。

  2. 在你的窗体或控件上添加一个ReoGrid控件,用于显示表格。

  3. 在窗体或控件的加载事件中,初始化并加载ReoGrid表格数据。

  4. 为ReoGrid表格的某个单元格(例如第一行第一个单元格)绑定右键菜单。

    // 绑定右键菜单
    worksheet.SetRangeData(RangePosition.FromCellPosition(0, 0), new object[,] { { "Right Click Me" } });
    worksheet.ContextMenu = new ContextMenuStrip();
    worksheet.ContextMenu.Items.Add("Option 1", null, Option1_Click);
    worksheet.ContextMenu.Items.Add("Option 2", null, Option2_Click);
    worksheet.ContextMenu.Items.Add("Option 3", null, Option3_Click);
    
  5. 实现每个菜单选项的点击事件处理程序。

    private void Option1_Click(object sender, EventArgs e)
    {
        // Option 1 的执行逻辑
        // 在这里填充等值向右的值
    }
    
    private void Option2_Click(object sender, EventArgs e)
    {
        // Option 2 的执行逻辑
        // 在这里实现等距填充的逻辑
    }
    
    private void Option3_Click(object sender, EventArgs e)
    {
        // Option 3 的执行逻辑
        // 在这里实现衰减填充的逻辑
    }
    

通过以上步骤,你可以在ReoGrid表格中设置右键菜单,并为每个菜单选项添加相应的点击事件处理程序。根据你的需求,在每个点击事件处理程序中实现相应的逻辑,例如填充等值向右的值、实现等距填充的逻辑或者实现衰减填充的逻辑。

请注意,以上代码示例仅供参考,你需要根据你的具体情况进行调整和扩展。

C#中,如果想要实现右键菜单功能,可以考虑使用ContextMenuStrip 组件实现。大致思路就是,当选中某个单元格,得到单元格的行号和列号,然后使用ContextMenuStrip 右键弹出菜单中的菜单选项。如果不行,可以将控件类型将型改成MyGrid即可:
private MyGrid reoGridControl1;

private void reoGrid_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        // 获取鼠标点击位置的行列索引
        int row = reoGrid.GetRowIndex((int)e.Location.Y);
        int col = reoGrid.GetColumnIndex((int)e.Location.X);
        
        // 在此处弹出右键菜单,并根据用户选择执行相应操作
    }
}
Items.Add("等值向右填充");
Items.Add("等距填充");
Items.Add("衰减填充");