有什么方法可以在显示上下文菜单之前获取它的宽度?
Any way to get the width of a Context Menu before it is displayed?
我想知道上下文菜单的宽度是多少,就在显示之前,可能在 myContextMenu.popup
事件处理程序中或更好,在 myContextMenu.show()
.[=13= 之前]
我想知道宽度的原因是我可以影响它的绘制位置。具体来说,在某列数据右对齐的情况下,当操作员右键单击时,我不希望上下文菜单覆盖数据,通常情况下,也向右。如果我有宽度,我可以将上下文菜单向左移动宽度量,上下文菜单的右上角将在光标所在的位置。
我真的不想使用 myContextMenu.DrawItem
事件来绘制上下文菜单项,除非那绝对是完成此操作的唯一方法。
ContextMenuStrip
具有 Left
、Top
、Width
和 Height
属性,您可以使用这些属性来查找其位置和大小。
同样要更改位置,您可以使用SetBounds
方法。
更正位置的合适事件是Opened
事件。
例子
private void contextMenuStrip1_Opened(object sender, EventArgs e)
{
contextMenuStrip1.SetBounds(contextMenuStrip1.Left - contextMenuStrip1.Width,
contextMenuStrip1.Top, 0, 0, BoundsSpecified.Location);
}
我想知道上下文菜单的宽度是多少,就在显示之前,可能在 myContextMenu.popup
事件处理程序中或更好,在 myContextMenu.show()
.[=13= 之前]
我想知道宽度的原因是我可以影响它的绘制位置。具体来说,在某列数据右对齐的情况下,当操作员右键单击时,我不希望上下文菜单覆盖数据,通常情况下,也向右。如果我有宽度,我可以将上下文菜单向左移动宽度量,上下文菜单的右上角将在光标所在的位置。
我真的不想使用 myContextMenu.DrawItem
事件来绘制上下文菜单项,除非那绝对是完成此操作的唯一方法。
ContextMenuStrip
具有 Left
、Top
、Width
和 Height
属性,您可以使用这些属性来查找其位置和大小。
同样要更改位置,您可以使用SetBounds
方法。
更正位置的合适事件是Opened
事件。
例子
private void contextMenuStrip1_Opened(object sender, EventArgs e)
{
contextMenuStrip1.SetBounds(contextMenuStrip1.Left - contextMenuStrip1.Width,
contextMenuStrip1.Top, 0, 0, BoundsSpecified.Location);
}