.NET Label.TextAlign 似乎不起作用

问题描述 投票:0回答:3

我有一个标签,我想要右对齐以便能够与文本框对齐。
Visual Studio 2010 Express 中的设计器已为我生成了此代码

this.lblAddData.AutoSize = true;  
this.lblAddData.Location = new System.Drawing.Point(167, 452);  
this.lblAddData.Name = "lblAddData";  
this.lblAddData.Size = new System.Drawing.Size(25, 14);  
this.lblAddData.TabIndex = 5;  
this.lblAddData.Text = "text";  
this.lblAddData.TextAlign = System.Drawing.ContentAlignment.MiddleRight;  

[文本][文本框] 在代码中,我以编程方式更改文本

lblAddData.Text = "a very long text";

但是文本隐藏在我放置在标签旁边的文本框后面
右侧。

[版本][文本框]

有人遇到过同样的问题吗?
我知道它缺少信息,所以请询问我是否需要更多信息。
最好的问候
戈尔根

c# .net winforms user-interface
3个回答
17
投票

嗯,我自己发现了这个错误; AutoSize 设置为 true,这是默认行为

this.lblAddData.AutoSize = true;

当我将其更改为 false 时,它按照我想象的那样工作。


3
投票

TextAlign
属性控制文本在标签内的对齐方式:

获取或设置标签中文本的对齐方式。

如果更改文本长度,则需要重新计算标签的

Location
,该标签始终位于左上角。

我找到了这篇代码项目文章,虽然可能超出了你想要的内容,但它指出:

此外,如果您要更改标签文本(例如,本地化应用程序时)或文本对齐方式,您必须调整控件大小/重新定位。因此,我创建了这个简单的标签来处理这些细节。

(我的大胆)

因此您可以使用相同的算法来重新定位标签。


0
投票

经过很多痛苦和挫折后,我得到了如下结果:

  1. 设置自动大小= false
  2. 加大文本框以允许增长。
  3. 将锚点设置为右侧
  4. 然后将 TextAlign 设置为 MiddleLeft(是的,向左,而不是向右。要么 Microsoft 的某个人搞混了方向,要么因为锚点而颠倒了)

这成功了。

© www.soinside.com 2019 - 2024. All rights reserved.