我有一个Windows窗体应用程序,它包含一些标签,一个按钮和一个面板内的组合框所有包装器 .
this.pnlSuboptions.Controls.Add(this.label1);
this.pnlSuboptions.Controls.Add(this.cboPtSize);
this.pnlSuboptions.Controls.Add(this.label2);
this.pnlSuboptions.Controls.Add(this.btnSelect);
当我尝试为标签加载本地化字符串时,我遇到了标签问题 . 某些语言的本地化字符串比英语字符串大 . 在这种情况下,标签的一部分隐藏在组合框或按钮下 .
我希望标签向左而不是向右增加 . 我已将标签的AutoSize属性设置为true,并且还使用了Anchor属性,但似乎没有任何效果 .
我找到了一个SO link,其中包含标签文本更改时此问题的解决方案,但我确定如何在我的方案中应用此方法,其中标签在表单加载期间只读取一次 .
有什么建议?
2 回答
您可以将它们放入 TableLayoutPanel 中,包含2列和2行 . 每个标签位于每行的左侧,两个组合框/按钮都位于其他单元格中(每行的右侧) .
然后,您必须停靠两个元素(Dock Fill)并将列设置为AutoSize . (如图所示)
您还可能希望将TablePanelLayout停靠到公共面板 .
如下图所示,TablePanelLayout具有相同的组件 . 但是在secoend中我只是更改了label3的文本 .
希望能帮助到你 . (也很抱歉我的英文不好,这不是我的母语 . 请随意更正任何错误的拼写,谢谢!)
我的第一个建议是:
将AutoSize属性设置为False
通过调整标签大小,确保宽度大于所需宽度 .
标签现在应该很好地适合它,不管它收到什么内容 .
第二个建议,您可以使用GDI来确定文本的大小,然后相应地调整标签大小 . 请参阅http://msdn.microsoft.com/en-us/library/6xe5hazb(v=vs.110).aspx
哦,是的,我差点忘了 . 确保您的面板不是裁剪的原因 . 我的意思是,检查面板是否足够大以使标签适合:-)
希望这可以帮助!
最好的问候,Zerratar