我有一个 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 属性?我当然可以使用显示它的技巧,隐藏它并再次显示它,但这似乎并不整洁......