datagridview contextmenustrip:仅显示所选行?

时间:2012-12-16 14:27:00

标签: c# datagridview contextmenustrip

我有标准的datagridview,我有contextmenustrip。我的问题是当用户单击鼠标右键而不是每行时我需要显示这个contextmenustrip!只在我选择的行上。 我试过这个:

dataGridView1.Rows[1].ContextMenuStrip = contextMenuStrip1;

但它没有用。

1 个答案:

答案 0 :(得分: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);
        }
    }
}