标签从右向左生长

我的表格上有一个标签,在表格的右边。此标签加载动态文本。

有时,它载入的文本太长,而且文本跨越了表单的边界,即一些文本不符合表单的要求。

我想让标签从右向左而不是从左向右生长。我该怎么做呢?

59330 次浏览

您不能让它“从右向左增长”,但是您可以分配它的 Left属性,这样它就不会超出表单:

label1.Text = "some dynamic text here...";
if (label1.Right > this.Width)
label1.Left = this.Width - label1.Width;

如果设计允许,还可以将其高度加倍,使文本跨越两行。

我在这里的问题是,我的标签是在一个小组,我做的任何事情都不工作。

我所做的就是将标签放置在 TableLayoutPanel控件中,并将 TableLayoutPanel 的 RightToLeft属性设置为 True; 这样就完成了任务。

您可以使用 TableLayoutPanel 或其他兼容的容器控件,但是可以为容器设置 RightToLeft 属性,为标签设置 Dock = “ Right”

设置 RightToLeft 属性并不总是给出某些字符串格式的预期结果,因为修改字符串会改变单词的顺序。

我通过设置标签解决了这个问题

属性为 假的,

对齐到 MiddleRight,

请注意,标签大小本身并没有随着文本的增长而增长,但是您可以通过给它足够的宽度来适应内容来处理它。视觉效果是一样的。

你可以写:

    public enum Leftorright { left,right}
private Leftorright _LeftToRight = Leftorright.left;
public Leftorright LeftToRight
{
get { return _LeftToRight; }
set { _LeftToRight = value; }
}




protected override void OnTextChanged(EventArgs e)
{
int oldWidth;
oldWidth = this.Width;
base.OnTextChanged(e);
if (LeftToRight == Leftorright.right && this.Width != oldWidth)
{
this.Left = this.Left - this.Width + oldWidth;
}
}
using System.Windows.Forms;


/// <summary>
/// The position of myLabel to the left of the otherControl component when entering
/// text "s".
/// You must set myLabel.AutoSize = true
/// </summary>
/// <param name="s">text</param>
void WriteText(string s)
{
int len = TextRenderer.MeasureText ( s, myLabel.Font ).Width;
myLabel.Left = otherControl.Left - 5 - len;
myLabel.Text = s;
}

FlowLayoutPanel中包裹 标签,并在面板中设置以下属性:

  • 锚定 ;
  • 自动大小到 成长与收缩;
  • 流向到 从右到左