0

我想显示一个带有国际化标签的按钮。在英文中,标签完全适合按钮的宽度。德语不合适。为了动态计算我使用的宽度 [...]

using (Graphics cg = this.CreateGraphics())
            {
                SizeF size = cg.MeasureString(OutlookAddIn4.Resources.Resources.ShowLoginText, this.showLogFile.Font);
                this.showLogFile.Width = (int)size.Width+3;
            }

[...]

对于 OutlookAddIn4.Resources.Resources.ShowLoginText="Logfile anzeigen" 中的字符串。在计算 125 像素。我什至添加了 3 个像素。按钮的填充设置为 0。为什么它计算错误的宽度?this.showLogFile.Font 设置为正确的字体(Microsoft Sans Serif,12 pt)(在调试器中检查了这个)。

4

1 回答 1

1

无需使用底层Graphics对象。

如果您将按钮的AutoSize属性设置为 true、AutoSizeModetoGrowAndShrinkAutoEllipsisto false,它将自动调整大小以适应文本。

但是如果你真的需要使用这些Graphics对象:

   using(Graphics cg =  this.CreateGraphics())
   {
       SizeF size = cg.MeasureString("Your text goes here",this.button1.Font);

       this.button1.Padding = 3;
       this.button1.Width = (int)size.Width;

       this.button1.Text = "Your text goes here";
   }
于 2020-05-24T20:20:31.703 回答