我正在实例化我自己的ToolStripButton并将其添加到一个ContextMenuStrip中。它会弹出,但文本会被截断:
string[] layouts = new string[]{"Test 1", "Test 2", "Test 3"};
List<ToolStripButton> items = new List<ToolStripButton>();
foreach (string layout in layouts)
{
ToolStripButton item = new ToolStripButton(layout, image, LayoutClicked);
item.AutoSize = true;
items.Add(item);
}
layoutMenus.Items.Clear();
layoutMenus.Items.AddRange(items.ToArray());
layoutMenus.Show(Cursor.Position.X, Cursor.Position.Y);由于AutoSize属性为true,因此文本会被截断
发布于 2009-10-11 07:30:01
好奇;我可以重现这个……一个非常奇怪的地方(对我来说)是设置菜单的.Width来修复它。但是将其设置为任何(它似乎完全忽略了该值):
layoutMenus.Width = 800; // could be 20, or 100 and would appear the same看看这能不能用。这对我来说是有意义的,尽管它没有真正的意义。
甚至:
layoutMenus.Width++;
layoutMenus.Width--;留有足够的空间,但是
layoutMenus.Width = layoutMenus.Width;不会(假设它会检查非更改,并忽略上面的副作用)。
发布于 2014-04-07 20:43:07
在对之前工作的上下文菜单实现进行了一些重构之后,我一直面临着同样的问题。就像@PeteBaughman一样,我不能通过改变ContextMenuStrip.Width来解决这个问题--宽度实际上没有改变( ContextMenuStrip.MaximumSize也没有被指定为:(0,0))。
按照Pete的建议添加一个看不见的东西就行了。经过几次实验,我发现了的另一个变通方法:调用ContextMenuStrip.PerformLayout()会导致预期的行为。
(在添加项目之前和之后调用SuspendLayout和ResumeLayout都不起作用。)
更新:真正的问题可能是,一个ToolStripButton被添加到一个ContextMenuStrip中,当像这样调用时,它通常会创建一个ToolStripMenuItem:
contextMenuStrip.Items.Add("Hello world"); // Returns a ToolStripMenuItem在创建正确类型的项目后,我可以省略对PerformLayout()的调用。
发布于 2012-08-03 06:47:19
2年后,我遇到了同样的问题。我没有设置宽度,触摸MaxSize属性也没有任何帮助。我的ContextMenuStrip只有一个项目--一个灰色的按钮,上面写着“不支持”。它被截断为"Not Supp“。
最后,我不得不在ContextMenuStrip的末尾添加一个虚拟项,并将其可见性设置为False。然后,ContextMenuStrip足够宽,可以显示我真正关心的第一个项目。
链接here
https://stackoverflow.com/questions/1550077
复制相似问题