繁体   English   中英

C# - DatagridView 和 ContextMenuStrip

[英]C# - DatagridView and ContextMenuStrip

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

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

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

如果您的用户右键单击 DataGridView 最后一列的 header,您似乎想要打开 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);
        }
    }
}

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

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

子项目已到位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM