如何在 Windows 表单中将标题栏文本居中对齐?

7

我正在开发一个Windows窗体应用程序。我想将文本对齐到窗体标题栏的中心或右侧。我该怎么做?


不要认为所有东西都是内置的,看看这个链接:http://www.codeproject.com/Articles/93959/WinForm-Extended - V4Vendetta
4个回答

16

可以使用自定义表单来实现-您将不得不创建自己的标题栏。请参见V4Vendettas的评论;

另一种方法(链接)是创建自己的窗体调整大小处理程序,并在其中插入以下代码。它将从文本左侧大小添加适当数量的空格。但是,您必须添加form.Refresh()并在form.Load中调用该方法;此外,任务栏中的文本将显示为"..."。

private void UpdateTextPosition()
{
    Graphics g = this.CreateGraphics();
    Double startingPoint = (this.Width / 2) - (g.MeasureString(this.Text.Trim(), this.Font).Width / 2);
    Double widthOfASpace = g.MeasureString(" ", this.Font).Width;
    String tmp = " ";
    Double tmpWidth = 0;

    while ((tmpWidth + widthOfASpace) < startingPoint)
    {
       tmp += " ";
       tmpWidth += widthOfASpace;
    }

    this.Text = tmp + this.Text.Trim();
}

在Unicode环境下(我的操作系统和VS2010都是中文版),tmp的宽度最终比空格的count * width要大得多。 - Lei Yang
我尝试编辑响应并在while循环内添加“t”到mpWidth。但是,它不允许我这样做,因为更改必须至少有6个字符。也许用户JleruOHep可以更改此设置。 - Gabriel Marius Popescu

0
 Graphics g = this.CreateGraphics();
        double fw = this.Width; // form width
        double tw = g.MeasureString(this.Text.Trim(), this.Font).Width; \\ text width
        double rp = (fw - tw) / 2;
        int tt = Convert.ToInt32(rp); 
        string st = " ";
        st = st.PadRight(tt / 3);
        this.Text = st + this.Text.Trim();

1
我建议您更改变量名称,以便更清楚地了解您实际正在做什么,或者至少在您的代码中提供描述。 - Tyler Hundley

0
如果这是一个控件内的文本(比如标签),你可以在 Windows Form Designer 中编辑名为“TextAlign”的属性来实现你想要的效果。
或者通过编程实现,
Label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;

如果你想对齐标题栏的文本,Winforms 没有提供这样的功能。你需要使用类似于这样的东西:http://www.codeproject.com/Articles/93959/WinForm-Extended


在C#中,我如何将标签或文本框控件添加到Windows窗体标题栏? - Ankush
你需要创建自己的表单 - 没有内置标题栏,但是有你自己的。 - JleruOHeP

-4

在 Windows 窗体设计器内。像 this.label1.AutoSize = false 一样进行更改;

然后:

this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接