C#WinForms – 智能文本框控件,根据文本框宽度自动格式化路径长度
是否存在可以根据文本框宽度显示路径的智能文本框控件(WinForms)。 例如,如果路径很短,它将显示整个路径(C:\ myfile.txt),但如果路径很长,它将显示开始和结束(C:\ SomeFolder … \ foo \ MyFile.txt )。 显示的字符长度应由文本框使用其宽度(动态)计算。 欢迎任何商业或开源建议。 非常感谢你。
是的,它是TextRenderer.DrawText()方法的内置function。 其中一个重载接受TextFormatFlags参数,您可以传递TextFormatFlags.PathEllipsis。 对TextBox执行此操作是不合适的,用户无法合理地编辑这样的缩写路径,您可能不知道原始路径可能是什么。 标签是最好的控件。
在项目中添加一个新类并粘贴下面显示的代码。 编译。 将新控件从工具箱顶部拖放到表单上。 不要太小。
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); } }
- 帮助修复BBcode正则表达式
- MyEnum.Item.ToString()和nameof(MyEnum.Item)有什么区别?
- 命名空间“System”中不存在类型或命名空间名称“Device”
- 如何在Windows窗体PictureBox中选择一个区域?
- 在母版页代码中获取页面标题
- 使用Selenium Webdriver处理Windows身份validation
- 参考平等性能差异? ((object)obj1 ==(object)obj2)vs。object.ReferenceEquals(obj1,obj2)
- 在C#中产生分段错误的规范方法是什么?
- 我需要在Base和子类的情况下定义INotifyPropertyChanged