我有一个带有tabControl
的简单Windows窗体应用程序。我在tabControl
上有3个面板,每个面板有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;
}
}
}
此图显示结果:
有没有人对我缺少的东西有任何想法?
答案 0 :(得分: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;
}
}
}
答案 1 :(得分:0)
SQL表中分配给中间列的字符串实际上是nchar(50)
,而不是nvarchar(50)
,这解释了问题。我将.Trim()添加到Text赋值中,现在看起来很棒。
答案 2 :(得分:0)
您可以使用属性菜单中的 TextAlign ,并将其设置为 MiddleCenter ...
如果这不起作用,则您的按钮文本大于实际按钮本身...您应该将字体大小重新缩放到较低的基本大小或百分比使用
实际按钮的大小btnFunction.Font = new Font(btnFunction.Font.Name, Convert.ToInt32(btnFunction.Height * 0.3333333333333333));
这会导致按钮的字体为按钮高度的三分之一....
答案 3 :(得分:0)
您可以将UseCompatibleTextRendering属性设置为true,然后使用TextAlign属性。