【问题标题】:C# - DatagridView and ContextMenuStripC# - DatagridView 和 ContextMenuStrip
【发布时间】:2011-07-22 00:05:10
【问题描述】:

我有一个包含五列和上下文菜单条的数据网格视图,其中包含项目和子项目。当我右键单击最后一列时,我想打开上下文菜单。

我试过这段代码,但它是打开的上下文菜单条,没有子项。

dataGrid.Columns[dataGrid.Columns.Count].HeaderCell.ContextMenuStrip = contextMenuStrip1;

【问题讨论】:

    标签: c# datagridview items contextmenustrip


    【解决方案1】:

    如果您的用户右键单击 DataGridView 最后一列的标题,您似乎想要打开 ContextMenuStrip。我会使用 DataGridView MouseDown 事件,并在该事件中检查这些条件,如果满足,请调用 ContextMenuStrip 的 Show 方法。

    像这样:

    private void dataGridView1_MouseDown(object sender, MouseEventArgs e) {
        if (e.Button == MouseButtons.Right) {
            var ht = dataGridView1.HitTest(e.X, e.Y);
            // See if the user right-clicked over the header of the last column.
            if ((    ht.ColumnIndex == dataGridView1.Columns.Count - 1) 
                 && (ht.Type == DataGridViewHitTestType.ColumnHeader)) {
                // This positions the menu at the mouse's location.
                contextMenuStrip1.Show(MousePosition);
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您的意思是要将上下文菜单附加到最后一列的标题,那么您的方向可能是正确的。但最后一列的索引是dataGrid.Columns.Count - 1。所以,这段代码对我来说很好:

      dataGrid.Columns[dataGrid.Columns.Count - 1].HeaderCell.ContextMenuStrip = contextMenuStrip1; ?
      

      子项已到位。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-03
        • 1970-01-01
        • 2016-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-02
        相关资源
        最近更新 更多