我可以在多行文本框中显示不适合整个行的上半部分吗?

Can I show the upper part of a line that doesn't fit whole in a multiline textbox?

在我的 WinForms 应用程序中,我有固定大小的多行文本框,可以包含可变行数。我希望文本框适合两行并在其中加税,以便在存在第三行时仅显示第三行的上半部分。不幸的是,第三行根本没有显示,只有 space 是空的——您需要向下滚动才能看到它。这并不好,因为这个想法是为了向用户表明可能需要向下滚动。是否可以强制文本框显示第三行的上半部分?

也许您可以使用 RichTextBox class,它默认显示部分行。它源自与 TextBox (TextBoxBase) 相同的基础 class,因此它应该是一个直接替代品。

我认为您不能开箱即用。但是,我可以想到两种方法来实现您的目标

  1. 您真的需要 TextBox 控件吗? Label 可以为您工作吗?如果是,那么Label就没有你上面描述的问题。如果没有,那么您可以使用一个巧妙的技巧来始终在 Label 中显示您的内容,并在用户开始输入时将其切换为 TextBox
  2. 另一种方法是禁用文本框中的滚动。将 TextBox 的高度调整为 3 条清晰可见的线。现在将此 TextBox 放入 Panel。确保 Panel 使用 Panel.AutoScroll = true(如果需要更多控制,可以使用单独的 VerticalScrollbarHorizontalScrollbar 或两者)。 现在调整 Panel.Height 以便只有 2 条完整的线可见,而第 3 条线部分可见。

您提到您的 TextBox

can contain a variable number of lines

但是你也提到了

I want the textboxes to fit two lines plus tax in them so that only the upper part of the third line is displayed when a third line is present

所以不确定是怎么回事。如果你需要动态调整你的TextBox的高度,那么看看这个post到Autoresize textbox control vertically