0

我正在尝试使用 VB 对 .NET 进行自己的控制,但在实现我想做的事情时遇到了问题。事实上,我正在制作一个从文本框类继承的控件,我试图对其进行的唯一修改是,如果控件明显已满,则用户无法再键入。所以:

  • 滚动条永远不应该出现。
  • 扩展的 TextBox 可以是多行的或单行的。
  • 扩展的 TextBox 可能有不同的字体和字号。

现在,我使用的技术是 graphics.measurestring 来获得一个 sizeF 包含我的字符串的宽度和高度,以将它与我的文本框控件的高度和宽度进行比较。所有这些都在 KeyDown 事件中(我不知道这是最好的解决方案)。我可以让它在宽度上正常工作,但我似乎无法在多行文本框中调整高度。如果有人曾经使用过这些东西,我需要一些关于应该如何完成的解释。谢谢你。

4

1 回答 1

0

问题是您的第三个要求:

The extended TextBox may have different fonts and font sizes. 

这意味着您必须通过该行中的哪些字符具有最大的字体大小来计算每行的高度,并且要知道这一点,您还必须知道每行中的哪些字符。它变得更糟,因为(令人惊讶地)不同的字体在相同的点大小下可以有不同的高度。如果不是因为按比例间隔的字体中的每个字符的宽度不同,这一切都可能是可行的。

如果你打算支持上标和下标...

于 2009-06-26T04:54:50.270 回答