【问题标题】:Relation between length and font-size of a string and width of a textbox字符串的长度和字体大小与文本框的宽度之间的关系
【发布时间】:2010-11-30 00:19:36
【问题描述】:

我在数据库中有一个字段,这个字段有一个最大长度,我想将一个文本框设置为适当的宽度。我正在运行时创建文本框。如何计算 width 属性的值?

例如,如果我有一个名为 IDClient 的字段 nvarchar(5),并且 font-Size 为 13,我想创建一个宽度足以写入 5 个字符的 texbox。

【问题讨论】:

    标签: c# wpf textbox width font-size


    【解决方案1】:

    也许应该使用TextRenderer.MeasureText(string, font)

    这里有一个小样本可能会对你有所帮助

            //Get this value from somewhere...
            TextBox textBox = new TextBox();
            int maxWidth = 10;
            int extraSpace = 3;
    
            //Create sample string
            StringBuilder sb = new StringBuilder(maxWidth);
            sb.Append('w', maxWidth);
    
            //Measure text 
            Size size = TextRenderer.MeasureText(sb.ToString(), textBox.Font);
    
            //Set width of TextBox to needed width
            textBox.Width = size.Width + extraSpace;
    

    【讨论】:

      【解决方案2】:

      指定

      输入类型='text' size='5' width='w' ........>

      您可以计算 w=num_characters * k。 其中 k 是常数。首先保持 k = 15。 然后进行反复试验,直到找到最合适的。

      【讨论】:

      • 另外你必须记住,直到字体是快递类型。您必须按“w”的宽度计算 k。因为它是最宽的字母表。
      • 谢谢!!好的,假设我找到了 size = 5 的完美 K 值。当字体大小发生变化时会发生什么?问题是我只知道运行时的字体大小。我需要一些使用字符串的大小和长度来计算 W 的算法。
      • 我知道这不是最好的方法。但你可以做到: w= num_chars * font_size * k;然后找到k。因为宽度将与字体大小成正比(以线性方式)。对于字体,将存在一个有效的 k 值。
      猜你喜欢
      • 2013-10-07
      • 2010-11-22
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多