6

我有一个简单的 Windows 窗体应用程序,带有tabControl. 我有 3 个面板tabControl,每个面板有 5 个按钮。第一组按钮上的文本是硬编码的,但是当您单击第一组中的一个按钮时会填充下一组,然后当您单击第二组中的一个按钮时,最后一组按钮会再次发生同样的事情。在 [Design] 视图中,我手动将TextAlign每个按钮的属性设置为MiddleCenter. 但是,当我运行应用程序时,中间一组按钮上的文本永远不会居中。它总是TopLeft对齐的。TextAlign每次以编程方式设置按钮文本时,我都尝试更改字体大小,甚至显式设置属性,如下所示:

private void setButtons(List<string> labels, Button[] buttons)
    {
        for (int i = 0; i < buttons.Count(); i++)
        {
            if (i < labels.Count)
            {
                buttons[i].Text = labels.ElementAt(i);
                buttons[i].TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
                buttons[i].Enabled = true;
            }
            else
            {
                buttons[i].Text = "";
                buttons[i].Enabled = false;
            }
        }
    }

此图像显示了结果: 对齐问题

有人对我所缺少的有任何想法吗?

4

4 回答 4

4

修剪您分配给按钮的文本。您也可以按索引引用标签,而无需调用ElementAt

private void setButtons(List<string> labels, Button[] buttons)
{
    for (int i = 0; i < buttons.Count(); i++)
    {
        Button button = buttons[i];

        if (i < labels.Count)
        {
            button.Text = labels[i].Trim(); // trim text here
            // button.TextAlign = ContentAlignment.MiddleCenter;
            button.Enabled = true;
        }
        else
        {
            button.Text = "";
            button.Enabled = false;
        }
    }
}
于 2013-01-23T15:54:06.040 回答
2

您可以将 UseCompatibleTextRendering 属性设置为 true,然后使用 TextAlign 属性。

于 2017-08-05T09:32:31.770 回答
0

SQL 表中分配给中间列的字符串实际上是nchar(50),而不是nvarchar(50),这就解释了问题。我将 .Trim() 添加到 Text 分配中,现在看起来很棒。

于 2013-01-23T15:55:33.040 回答
0

您可以使用属性菜单中的TextAlign并将其设置MiddleCenter ...

如果这不起作用,那么您的按钮文本大于实际按钮本身......您应该将您的字体大小重新调整为较低的基本大小或使用实际按钮的百分比大小

btnFunction.Font = new Font(btnFunction.Font.Name, Convert.ToInt32(btnFunction.Height * 0.3333333333333333));

这将导致按钮的字体是按钮高度的三分之一......

于 2016-07-04T19:43:18.420 回答