【发布时间】:2011-02-12 18:10:51
【问题描述】:
我有一个 ContextMenuStrip (ctMenuMassEdit),我想在左键单击按钮 (btnMassEdit) 时显示它。我希望 ContextMenuStrip 显示在按钮上方,即相对于按钮的位置 (0,-ContextMenuStrip.Height):
private void btnMassEdit_Click(object sender, EventArgs e)
{
ctMenuMassEdit.Show(btnMassEdit, new Point(0, -ctMenuMassEdit.Height));
}
但是,第一次单击按钮时,Height 属性为 0(我假设在第一次显示之前未创建 ContextMenuStrip),结果是 ContextMenuStrip 出现在按钮的顶部。然而,我第二次点击按钮时,它出现在正确的位置,所以我的基本逻辑至少是正确的。
我尝试在显示 ContextMenuStrip 之前添加以下内容,但效果不佳:
if (!ctMenuMassEdit.Created)
{
ctMenuMassEdit.CreateControl();
}
那么,有没有一种方法可以在第一次显示之前创建 ContextMenuStrip,这样我就有了正确的 Height 属性?我当然可以使用显示、隐藏和再次显示的技巧,但这似乎不太整洁......
【问题讨论】:
标签: c# .net winforms contextmenustrip