1

Ultragrid (Infragistics) の空の部分または C# コンテキスト メニューのヘッダーを右クリックすると表示され、何も実行されません。クリックが行に重なったときにのみコンテキスト メニューを表示するにはどうすればよいですか?

SO 私は、ウルトラ グリッドを持っているプロジェクトに取り組んでおり、その中にコンテキスト メニューを配置しています。これは、誰かがグリッドを右クリックすると、メニューが表示されます (削除)。しかし、右クリックするとコンテキストメニューが空白スペースとウルトラグリッドヘッダーに表示され、クリックが行に重なったときに表示されます。

4

1 に答える 1

3

これはご使用の環境でテストする必要がありますが、機能する可能性があると思います。
秘訣は、MouseDownイベントを使用して、マウス位置の下のセル(存在する場合)をチェックし、IsDataRowプロパティをテストするDataRowセル上にある場合にのみContextMenuを割り当てることです。

private void grid_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
    UltraGridCell currentCell = null;
    grid.ContextMenu = null;

    if (e.Button == MouseButtons.Right)
    {
        Point ulPoint = new Point(e.X, e.Y);
        UIElement el = grid.DisplayLayout.UIElement.ElementFromPoint(ulPoint); 
        if (el != null)
            currentcell = (UltraGridCell)el.GetContext(typeof(UltraGridCell)); 
        if (currentcell != null && currentCell.Row.IsDataRow == true)
        {
            grid.ActiveCell = currentcell;
            grid.ContextMenu = menuPopup;
        }
    }
}
于 2012-10-04T21:07:24.143 に答える