【问题标题】:Is it possible to add ComboBox as ContextMenu item in DataGridView WindowsForms C#?是否可以在 DataGridView Windows Forms C# 中将 ComboBox 添加为上下文菜单项?
【发布时间】:2023-03-21 20:10:01
【问题描述】:

![在此处输入图像描述][1]我试图在数据网格上的 ContextMenu 中添加一个组合框,当用户右键单击时,菜单将弹出。它应该显示退出并分配给银行 ID 菜单选项,其中银行 ID 是组合框下拉菜单。我做了一些在线搜索,但找不到任何接近的东西,这让我想知道,甚至有可能做到这一点。我用一些代码创建了一个模型图像。如果有人做过类似的事情并与我分享,我将不胜感激。谢谢。

    private ContextMenu menuOpp = new ContextMenu();
    private ComboBox cmbAssign = new ComboBox();
    private int currentMouseOverRow;

    private void dataGridView2_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            menuOpp.Name = "Exit";
            menuOpp.MenuItems.Add("Exit", new EventHandler(menuItem_Click));
            cmbAssign.Items.Add("assign");

            dataGridView2.ContextMenu = menuOpp;

            currentMouseOverRow = dataGridView2.HitTest(e.X, e.Y).RowIndex;

            menuOpp.Show(dataGridView2, new Point(e.X, e.Y));
        }
    }

【问题讨论】:

  • 这不是常见的 UI 设计。请改用 ContextMenuStrip,以便您可以添加 ToolStripComboBox 控件。尚不清楚用户何时与 ComboBox 交互,它如何或何时消失?这个想法有问题。

标签: c# datagridview contextmenu right-click menu-items


【解决方案1】:

我自己解决了这个问题。我创建了一个 ContextMenuStrip,添加了一个带有子 ComboBox 项的 MenuItem,在 ToolStripMenuItem Click 事件上填充了 ComboBox。然后将 ContextMenuStrip 对象分配给它的 ContextMenuStrip 属性。将 ContextMenuStrip 对象分配给控件后,上下文菜单显示为用户右键单击。

private void InitializeComponent()
{
    System.Windows.Forms.ContextMenuStrip Context =
            new System.Windows.Forms.ContextMenuStrip();

    ToolStripMenuItem mnuAssign = new ToolStripMenuItem("Assign");

    Context.Items.Add(mnuAssign);
    ContextMenuStrip = context;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多