Я искал способ вставить многоточие в путь C # и нашел здесь ответ на stackoverflow: C # Path Ellipsis без вызова Win32 API
Используя RTM-версии VS2010 и .Net 4.0, я не смог заставить предложенный метод работать. Я искал в сети и нашел пример кода, который использует тот же метод, но он не прошел аналогичным образом.
Вы можете увидеть строку, которую я пытаюсь сократить, в моем коде ниже.
После вызова метода MeasureText входная строка (OriginalName) и выходная строка (ellipsisedName) выглядят следующим образом:
d: \ ABCD \ EFGH \ IJKL \ MNOP \ QRST \ ... \ test.txt \ 0F \ GHIJ \ KLMN \ OPQR \ STIV \ WXYZ \ test.txt
Две проблемы:
1) Результирующая строка является узаконенной (путь усекается, как и ожидалось, но за ним следует то, что выглядит как завершающий ноль в стиле C и фрагмент исходного пути).
2) Моя исходная строка заменена на идентичную выходной строке.
Я что-то не так делаю?
namespace WindowsFormsApplication2 {
public partial class Form1 : Form {
public Form1()
{
InitializeComponent();
string OriginalPath = @"d:\abcd\efgh\ijkl\mnop\qrst\uvwx\yzAB\CDEF\GHIJ\KLMN\OPQR\STIV\WXYZ\test.txt";
string ellipsisedPath = OriginalPath;
Size proposedSize = new Size(label1.Width, label1.Height);
TextRenderer.MeasureText(ellipsisedPath, label1.Font, proposedSize, TextFormatFlags.ModifyString | TextFormatFlags.PathEllipsis);
}
}
}