【问题标题】:How to indicate there is more text in a single-line C# winforms textbox?如何指示单行 C# winforms 文本框中有更多文本?
【发布时间】:2011-06-25 06:25:59
【问题描述】:

有时,在带有 C# Visual Studio 2010 的 winforms 中,固定宽度的单行文本框包含的字符宽度正好使两个字符(或单词)之间的边界与文本框的边缘对齐,因此无法告诉有更多的文本,而不用鼠标点击和拖动。

指示有更多文本的最佳做法是什么?

【问题讨论】:

  • 这正是它在所有其他应用程序中的工作方式。不知道为什么你觉得有必要改变它。这是围绕标准 UI 工作的尝试之一,它只提供最小的好处并增加了很多额外的复杂性。
  • @Cody Gray 由于这种“标准”行为,使用我的应用程序的人感到困惑并且数据丢失了。
  • 使用您的应用程序的人对其他应用程序有同样的问题吗?因为如果不是这样,您的应用程序设计就会出现严重问题。其他一切都以相同的方式工作,并且您的用户设法在那里做得很好。你需要找出是什么让你的与众不同并改正它。
  • @ryantm 让你的 UI 变得更好!仅仅因为某事“是”并不意味着它是“最好的”。否则什么都不会进化。我对文本框大小使用基本的文本长度检查来决定自动省略号以及将全文添加为悬停提示。因此,仅当文本超出可用空间时才会出现提示。效果很好。我手头没有代码,但如果你在这么久之后仍然想要它,可以私信你。

标签: c# .net winforms user-interface textbox


【解决方案1】:

要么干脆不要使用单行文本框

或者像我一样.. 创建一个自定义文本框控件,继承 TextBox 类,并使其在溢出且未聚焦时看起来像 Shekha...,当它具有焦点时,将 Text 设置回 Shekhar_Pro 或不管它最初是什么。

【讨论】:

    【解决方案2】:

    我已经使用了这个 codeproject.com 文章中的代码:

    Auto Ellipsis

    作者扩展了 TextBox 以创建一个文本框控件,它可以缩短文本以适应并合理地使用省略号来指示它必须这样做。

    【讨论】:

      【解决方案3】:

      这不是一个真正的问题,用户在一分钟前自己输入了文本。她知道文本被剪掉了。

      请确保您自己不使用 TextBox 来显示文本。这需要一个标签。并且它具有 AutoEllipsis 属性来自动显示...如果文本不适合标签的 MaximumSize。还有一个自动工具提示来显示其余部分。

      【讨论】:

      • 除非其他人拖动对话框的边框使其变宽,输入文本。那么其他用户将无法分辨。
      • 或者是用户可以编辑的预填表单。在我看来,任何数量的场景都会使这成为一个值得解决的问题。太多优秀的程序员贬低优秀的 UI 设计。
      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多