【问题标题】:How to show different contextmenustrip in datagridview using c#如何使用c#在datagridview中显示不同的contextmenustrip
【发布时间】:2014-12-30 08:35:29
【问题描述】:

当我右键单击 datagridview 时,我需要显示 contextmenustrip。我的问题是,如果我右键单击 datagridview 列标题应该显示一种类型的菜单。如果我右键单击网格单元格,则显示不同的菜单项。我使用了标题列鼠标单击和单元格鼠标单击。但我有一些问题。标题栏鼠标点击不起作用。请给出解决方案。

【问题讨论】:

  • “不工作”和“一些问题”是什么意思?您尝试的更多详细信息和代码可能会有所帮助。
  • 您可以使用以下方法设置 contextmenustrip:dataGridView1.Columns[0].HeaderCell.ContextMenuStrip 为标题,并为网格设置一个。

标签: c# winforms datagridview


【解决方案1】:

只需使用 MouseUp 事件来检测鼠标点击。 DataGridView.HitTest() 方法可以告诉您点击了 DGV 的哪个部分,从而允许您选择所需的 CMS。例如:

    private void dataGridView1_MouseUp(object sender, MouseEventArgs e) {
        if (e.Button != MouseButtons.Right) return;
        var dgv = (DataGridView)sender;
        ContextMenuStrip cms = null;
        var hit = dgv.HitTest(e.X, e.Y);
        switch (hit.Type) {
            case DataGridViewHitTestType.ColumnHeader: cms = contextMenuStrip1; break;
            case DataGridViewHitTestType.Cell: cms = contextMenuStrip2; break;
        }
        if (cms != null) cms.Show(dgv, e.Location);
    }

【讨论】:

    猜你喜欢
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    相关资源
    最近更新 更多