我可以在多行文本框中显示不适合整个行的上半部分吗?
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,因此它应该是一个直接替代品。
我认为您不能开箱即用。但是,我可以想到两种方法来实现您的目标
- 您真的需要
TextBox
控件吗? Label
可以为您工作吗?如果是,那么Label
就没有你上面描述的问题。如果没有,那么您可以使用一个巧妙的技巧来始终在 Label
中显示您的内容,并在用户开始输入时将其切换为 TextBox
。
- 另一种方法是禁用文本框中的滚动。将
TextBox
的高度调整为 3 条清晰可见的线。现在将此 TextBox
放入 Panel
。确保 Panel
使用 Panel.AutoScroll = true
(如果需要更多控制,可以使用单独的 VerticalScrollbar
或 HorizontalScrollbar
或两者)。
现在调整 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
在我的 WinForms 应用程序中,我有固定大小的多行文本框,可以包含可变行数。我希望文本框适合两行并在其中加税,以便在存在第三行时仅显示第三行的上半部分。不幸的是,第三行根本没有显示,只有 space 是空的——您需要向下滚动才能看到它。这并不好,因为这个想法是为了向用户表明可能需要向下滚动。是否可以强制文本框显示第三行的上半部分?
也许您可以使用 RichTextBox
class,它默认显示部分行。它源自与 TextBox
(TextBoxBase
) 相同的基础 class,因此它应该是一个直接替代品。
我认为您不能开箱即用。但是,我可以想到两种方法来实现您的目标
- 您真的需要
TextBox
控件吗?Label
可以为您工作吗?如果是,那么Label
就没有你上面描述的问题。如果没有,那么您可以使用一个巧妙的技巧来始终在Label
中显示您的内容,并在用户开始输入时将其切换为TextBox
。 - 另一种方法是禁用文本框中的滚动。将
TextBox
的高度调整为 3 条清晰可见的线。现在将此TextBox
放入Panel
。确保Panel
使用Panel.AutoScroll = true
(如果需要更多控制,可以使用单独的VerticalScrollbar
或HorizontalScrollbar
或两者)。 现在调整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