我有一个ContextMenuStrip(ctMenuMassEdit),我想在左键单击按钮时显示(btnMassEdit).我希望ContextMenuStrip显示在按钮上方,即相对于按钮的position(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属性?我当然可以使用显示它的黑客,隐藏它并再次显示它,但这似乎并不真实……
最佳答案 怎么样
ctMenuMassEdit.Show(btnMassEdit,Me.PointToScreen(btnMassEdit.Location),ToolStripDropDownDirection.AboveRight);