首页 文章

调整Windows窗体应用程序中的标签大小

提问于
浏览
2

我有一个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 回答

  • 3

    您可以将它们放入 TableLayoutPanel 中,包含2列和2行 . 每个标签位于每行的左侧,两个组合框/按钮都位于其他单元格中(每行的右侧) .

    然后,您必须停靠两个元素(Dock Fill)并将列设置为AutoSize . (如图所示)

    AutoSize Columns

    您还可能希望将TablePanelLayout停靠到公共面板 .

    如下图所示,TablePanelLayout具有相同的组件 . 但是在secoend中我只是更改了label3的文本 .

    enter image description here

    希望能帮助到你 . (也很抱歉我的英文不好,这不是我的母语 . 请随意更正任何错误的拼写,谢谢!)

  • 4

    我的第一个建议是:

    • 将AutoSize属性设置为False

    • 通过调整标签大小,确保宽度大于所需宽度 .

    • 标签现在应该很好地适合它,不管它收到什么内容 .

    第二个建议,您可以使用GDI来确定文本的大小,然后相应地调整标签大小 . 请参阅http://msdn.microsoft.com/en-us/library/6xe5hazb(v=vs.110).aspx

    Graphics gfx = this.label1.CreateGraphics(); // I think its called that, cant remember :)
    
    Font stringFont = new Font("Arial", 16);
    
    // Measure string.
    SizeF stringSize = new SizeF();
    stringSize = gfx.MeasureString(this.label1.Text, stringFont);
    this.label1.Size = new Size((int)stringSize.Width, (int)stringSize.Height);
    

    哦,是的,我差点忘了 . 确保您的面板不是裁剪的原因 . 我的意思是,检查面板是否足够大以使标签适合:-)

    希望这可以帮助!

    最好的问候,Zerratar

相关问题