DataGridView的ContextMenuStrip:只显示选择的行?

3

我有一个标准的DataGridView和一个ContextMenuStrip。我的问题是,我需要在用户单击右键时显示这个ContextMenuStrip,但不是在每一行上!只在我选择的行上。 我尝试了这个:

dataGridView1.Rows[1].ContextMenuStrip = contextMenuStrip1;

但是它不起作用。
1个回答

6
听起来你想在用户右键单击满足某些条件的 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);
        // Place your condition HERE !!!
        // Currently it allow right click on last column only
        if ((    ht.ColumnIndex == dataGridView1.Columns.Count - 1) 
             && (ht.Type == DataGridViewHitTestType.ColumnHeader)) {
            // This positions the menu at the mouse's location
            contextMenuStrip1.Show(MousePosition);
        }
    }
}

不,我想要在用户右键单击DataGridView时打开我的ContextMenuStrip,但不是在每一行(单元格)上,而只是在我之前选择的行(单元格)上。 - Paweł Adamczyk
一旦您在IF()语句的条件部分定义了逻辑,它就会起作用! - Yusubov
1
这个 contextMenuStrip1.Show(MousePosition); 是我正在寻找的那一行。谢谢。 - Alejandro del Río

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接