C# WinForms - Умное Управление TextBox, чтобы автоотформатировать Длину пути на основе Текстового поля width

Делает умное управление текстовым полем (WinForms), существует, который может отобразить путь в зависимости от текстового поля width. Например, если тракт будет короток, то он отобразит весь путь (C:\myfile.txt), но если тракт будет длинен, то он отобразит запуск и конец (C:\SomeFolder...\foo\MyFile.txt). Длина отображенных символов должна быть вычислена (динамично) текстовым полем с помощью его ширины. Любые коммерческие или предложения с открытым исходным кодом приветствуются. Thank you very much.

6
задан Brian McCarthy 24 March 2011 в 19:16
поделиться

1 ответ

Да, это встроенная возможность метода TextRenderer.DrawText (). Одна из его перегрузок принимает аргумент 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);
  }
}
15
ответ дан 8 December 2019 в 16:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: