【问题标题】:C# WinForms - Smart TextBox Control to auto-Format Path length based on Textbox widthC# WinForms - 智能文本框控件根据文本框宽度自动格式化路径长度
【发布时间】:2011-01-24 18:24:54
【问题描述】:

是否存在可以根据文本框宽度显示路径的智能文本框控件 (WinForms)。例如,如果路径很短,它将显示整个路径 (C:\myfile.txt),但如果路径很长,它将显示开始和结束 (C:\SomeFolder...\foo\MyFile.txt )。显示字符的长度应由文本框使用其宽度(动态)计算。欢迎任何商业或开源建议。非常感谢。

【问题讨论】:

    标签: c# winforms path textbox filenames


    【解决方案1】:

    是的,它是 TextRenderer.DrawText() 方法的内置功能。它的重载之一接受 TextFormatFlags 参数,您可以传递 TextFormatFlags.PathEllipsis。对 TextBox 这样做是不合适的,用户无法合理地编辑这样的缩写路径,您将不知道原始路径可能是什么。 Label 是最好的控件。

    向您的项目添加一个新类并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖放到表单上。不要太小。

    using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    
    class PathLabel : Label {
      [Browsable(false)]
      public override bool AutoSize {
        get { return base.AutoSize; }
        set { base.AutoSize = false; }
      }
      protected override void OnPaint(PaintEventArgs e) {
        TextFormatFlags flags = TextFormatFlags.Left | TextFormatFlags.PathEllipsis;
        TextRenderer.DrawText(e.Graphics, this.Text, this.Font, this.ClientRectangle, this.ForeColor, flags);
      }
    }
    

    【讨论】:

    • 这太棒了!但是,当我将 Graphics 设置为 SmoothingMode.AntiAlias 时,TextRenderer 似乎不支持它。
    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 2014-06-11
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多