如何根据文本大小调整按钮的大小

And*_*y M 17 c# text resize button winforms

在使用C#+ Winforms翻译应用程序的过程中,我需要根据语言更改按钮的文本.

我的问题如下:

假设我要翻译"大家好!"按钮."Bonjour tout le monde"!

你可以猜到,如果我输入英文文本或法文文本,按钮的大小将不一样......我的问题是"简单",我怎样才能设法调整按钮的大小,以便文本适合其内容按钮 ?

到目前为止,我有类似的东西!

[大家好!]

[你好]

And*_*lon 26

Graphics正如其他海报所说,绝对不需要使用底层物体.

如果将按钮的AutoSize属性设置为true,则将AutoSizeModeto GrowAndShrink设置AutoEllipsis为false,并将其设置为false,它将自动调整大小以适合文本.

话虽这么说,您可能需要进行多次布局调整,以使此更改适合您的UI.您可以调整按钮的填充以在文本周围添加空间,并且您可能希望将按钮放在TableLayoutPanel(或某物)中以在调整大小时阻止它们重叠.

编辑:@mastro指出:AutoEllipsis只有当有效的AutoSizefalse(说明文档),所以它可以,只要其他三个属性都设置正确安全地忽略.

  • @Tim - 我没有对MeasureString说任何负面的东西,它有它的用途,但这是明确的不是其中之一.使用不必要的任意(宽度+ = 3)代码来捣乱您的代码是一种不好的做法. (3认同)

Con*_*rix 22

最好的办法是按照ach的回答设置AutoSize属性

但是,如果AutoSize不适合您,则在代码中调整按钮大小非常容易.您只需要设置按钮的宽度即可.诀窍是让它足够大以适合你的文字.

   using(Graphics cg =  this.CreateGraphics())
   {
       SizeF size = cg.MeasureString("Please excuse my dear aunt sally",this.button1.Font);

       // size.Width+= 3; //add some padding .net v1.1 and 1.0 only
       this.button1.Padding = 3;
       this.button1.Width = (int)size.Width;

       this.button1.Text = "Please excuse my dear aunt sally";
   }
Run Code Online (Sandbox Code Playgroud)


小智 8

试试这个:

Button.AutoSize = true;
Button.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly;
Button.TextAlign = ContentAlignment.MiddleLeft;
Button.Padding = new Padding(0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)