ero alla ricerca di un modo per inserire i puntini di sospensione in un C# percorso, e ha trovato una risposta qui su StackOverflow: C# Path Ellipsis without Win32 API callAggiungi Ellipsis ad un percorso in un programma WinForms senza chiamata API Win32 (rivisitato)
Utilizzando la RTM versioni di VS2010 e .Net 4.0, non sono riuscito a far funzionare il metodo suggerito. Ho cercato il codice di esempio "Net and found" che utilizza lo stesso metodo, ma non ha funzionato allo stesso modo.
È possibile visualizzare la stringa che sto cercando di abbreviare nel mio codice qui sotto.
Dopo aver chiamato il metodo MeasureText, sia la stringa di input (OriginalName) e la stringa di uscita (ellipsisedName) simile a questa:
d: \ abcd \ efgh \ ijkl \ mnop \ qrst \ ... \ test txt \ 0F \ GHIJ \ KLMN \ OPQR \ STIV \ WXYZ \ test.txt
due problemi:
1) la stringa risultante viene narfed (il percorso viene troncato come previsto, ma è seguito da quello che sembra come uno stile C che termina con null e un pezzo del percorso originale).
2) La stringa originale è stata modificata in per essere identica alla stringa di output.
Sto facendo qualcosa di sbagliato?
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);
}
}
}
Non vedo come la chiamata a MeasureText() possa eventualmente modificare OriginalPath. Se ciò accade davvero, il metodo MeasureText() sta facendo qualcosa di veramente originale. –