c# -数据视图和上下文菜单条

本文关键字:上下文 菜单 视图 数据 | 更新日期: 2023-09-27 18:03:21

我有一个datagridview与五列和上下文菜单条,其中有项目和子项。当我右键点击最后一列时,我想打开上下文菜单。

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

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

c# -数据视图和上下文菜单条

看起来你想要打开你的ContextMenuStrip如果你的用户右键单击你的DataGridView的最后一列的标题。我会使用DataGridView的MouseDown事件,并在该事件检查这些条件,如果他们满足调用Show方法的ContextMenuStrip。

:

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);
        }
    }
}

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

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

子条目已就位