编程语言
首页 > 编程语言> > c# – 在显示ContextMenuStrip之前查找它的高度

c# – 在显示ContextMenuStrip之前查找它的高度

作者:互联网

我有一个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);

标签:c,net,winforms,contextmenustrip
来源: https://codeday.me/bug/20190705/1384728.html