Щелчок правой кнопкой мыши на propertyGridControl не работает - PullRequest
0 голосов
/ 10 марта 2011

Я обрабатываю оба события Click и MouseClick на propertyGridControl, но когда я щелкаю правой кнопкой, ничего не происходит - он ловит только левое.

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

Как поймать правую кнопку мыши?

1 Ответ

1 голос
/ 10 марта 2011

Я проверил, как работает событие MouseClick, и не вижу этой проблемы. Событие правильно поднято. Я проверил 10.2.5 (последняя версия) PropertyGridControl. Я могу только представить, что вы щелкаете внутри редактора сетки. В этом случае события мыши и клавиатуры управляются редактором на месте, а не сеткой. Чтобы поймать это событие, вы можете использовать следующий код:

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 элемента управления.

...