【问题标题】:Can I show the upper part of a line that doesn't fit whole in a multiline textbox?我可以在多行文本框中显示不适合整个行的上半部分吗?
【发布时间】:2016-05-09 10:00:26
【问题描述】:

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

【问题讨论】:

  • @GrantWinney 确实如此,但颜色的变化不是很令人印象深刻,而且箭头很小。这对用户来说应该是显而易见的,因为该应用程序将由服务台技术人员使用,他们通常一次解决三到四个最终用户问题。很不幸,但这是我们目前的工作环境,可能会导致错误。
  • 上面的评论是对这个问题的回应:“滚动条指示还不够吗?”
  • This SO post 值得一读。听起来实现此解决方案将需要摆弄文本框如何绘制自身,这可能是一个看似困难的命题——尽管我完全同意开箱即用的实现在指示存在更多文本方面做得很差通过不绘制文本的部分“第三行”。

标签: c# winforms textbox


【解决方案1】:

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

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

你提到你的TextBox

可以包含可变数量的行

但是你也提到了

我希望文本框在其中包含两行加税,以便在存在第三行时仅显示第三行的上半部分

所以不确定是什么情况。如果你需要动态调整你的TextBox的高度,那么看这个帖子到Autoresize textbox control vertically

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多