0

我正在处理 propertyGridControl 上的 Click 和 MouseClick 这两个事件,但是当我用右键单击时没有任何反应 - 它只捕获左侧。

private void propertyGridControl_Click(object sender, EventArgs e)
    {
        int i = 0;
        if (e.Button == System.Windows.Forms.MouseButtons.Right)
        {
            MessageBox.Show("right");
        }
    }

如何捕捉鼠标右键?

4

1 回答 1

1

我检查了 MouseClick 事件是如何工作的,没有看到这个问题。事件已正确引发。我检查了 PropertyGridControl 的 10.2.5(最新版本)。我只能想象您在网格编辑器中单击。在这种情况下,鼠标和键盘事件由就地编辑器而不是网格管理。要捕获此事件,您可以使用以下代码:

private void propertyGridControl1_ShownEditor(object sender, EventArgs e) {
    PropertyGridControl pgc = sender as PropertyGridControl;
    pgc.ActiveEditor.MouseClick -= new MouseEventHandler(ActiveEditor_MouseClick);
    pgc.ActiveEditor.MouseClick += new MouseEventHandler(ActiveEditor_MouseClick);
}

void ActiveEditor_MouseClick(object sender, MouseEventArgs e) {
    if(e.Button == System.Windows.Forms.MouseButtons.Right) {
        MessageBox.Show("right");
    }            
}

我还有一个想法。如果设置了控件的 ContextMenuStrip 属性,则在按下鼠标右键时不会引发 MouseClick 事件。是你的情况吗?解决方案很简单——处理控件的 MouseDown 事件。

于 2011-03-10T14:40:45.430 回答