gpt4 book ai didi

c# - ContextMenuStrip 未正确调整大小

转载 作者:行者123 更新时间:2023-11-30 15:27:18 27 4
gpt4 key购买 nike

当我更改 ToolStripLabel 的文本时在我的上下文菜单中,当我更改菜单项的文本时,上下文菜单不会像预期的那样自动调整大小。
然后看起来像这样:

enter image description here

如何正确调整上下文菜单的大小?
我可以更改真实菜单项的文本,但我认为这是一个肮脏的解决方案。


测试表格: (使用鼠标左键,左侧和右侧)

using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1: Form
{
private ToolStripLabel menuLabel;

private void CreateNewContextMenu()
{
ContextMenuStrip = new ContextMenuStrip();

// label
menuLabel = new ToolStripLabel("hello");
menuLabel.ForeColor = Color.Blue;
ContextMenuStrip.Items.Add(menuLabel);

// items
ContextMenuStrip.Items.Add("Test");
ContextMenuStrip.Items.Add("Cut");
ContextMenuStrip.Items.Add("&Copy");
ContextMenuStrip.Items.Add("&Paste");
ContextMenuStrip.Items.Add("&Delete");
}

protected override void OnMouseClick(MouseEventArgs e)
{
CreateNewContextMenu();
menuLabel.Text = "hello world hello world hello world";
Point p = PointToScreen(Point.Empty);

// left
if (e.X < ClientSize.Width / 2)
ContextMenuStrip.Show(p.X + 8, p.Y + 8);
// right
else
{
ContextMenuStrip.Items[1].Text = menuLabel.Text;
ContextMenuStrip.Show(p.X + ClientSize.Width - 8, p.Y + 8);
}

base.OnMouseClick(e);
}
}
}

最佳答案

是的,当您分配该菜单项的 Text 属性时,ContextMenuStrip 不会重新计算布局。可以说它应该懒惰地做,但这看起来很无聊。你必须帮忙,这是一条线:

    menuLabel.Text = "hello world hello world hello world";
ContextMenuStrip.PerformLayout();

关于c# - ContextMenuStrip 未正确调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27817550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com