簡體   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