在显示上下文菜单之前,有什么方法可以获得它的宽度?

时间:2018-02-01 02:02:40

标签: c# .net winforms contextmenustrip

我想知道上下文菜单的宽度,就在显示之前,可能在myContextMenu.popup事件处理程序中,或者更好,在myContextMenu.show()之前。

我想知道宽度的原因是,我可以影响它的绘制位置。具体来说,在列的数据右对齐的情况下,当操作员右键单击时,我不希望上下文菜单覆盖数据,这通常也是右侧的数据。如果我有宽度,我可以将上下文菜单向左移动宽度量,上下文菜单的右上角将位于光标的位置。

我真的不想使用myContextMenu.DrawItem事件来绘制上下文菜单项,除非这绝对是实现此目的的唯一方法。

1 个答案:

答案 0 :(得分:3)

ContextMenuStrip包含LeftTopWidthHeight属性,可用于查找其位置和大小。

另外,要更改位置,您可以使用SetBounds方法。

更正位置的合适事件是Opened事件。

示例

private void contextMenuStrip1_Opened(object sender, EventArgs e)
{
    contextMenuStrip1.SetBounds(contextMenuStrip1.Left - contextMenuStrip1.Width,
        contextMenuStrip1.Top, 0, 0, BoundsSpecified.Location);
}