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");
    }            
}

もう1つだけアイデアがあります。コントロールの ContextMenuStrip プロパティが設定されている場合、マウスの右ボタンが押されても MouseClick イベントは発生しません。それはあなたの場合ですか?解決策は簡単です。コントロールの MouseDown イベントを処理します。

于 2011-03-10T14:40:45.430 に答える