que estaba buscando una forma de insertar una elipse en un # ruta C, y se encontró una respuesta aquí en stackoverflow: C# Path Ellipsis without Win32 API callAñadir puntos suspensivos para un camino en un programa de Windows Forms sin Win32 llamada a la API (revisited)
Utilizando el RTM versiones de VS2010 y .Net 4.0, no pude hacer funcionar el método sugerido. Busqué en 'Net' y encontré un código de ejemplo que usa el mismo método, pero falló de la misma manera.
Puede ver la cadena que estoy tratando de acortar en mi código a continuación.
Después de llamar al método measureText, tanto la cadena de entrada (originalName) y la cadena de salida (ellipsisedName) tener este aspecto:
d: \ ABCD \ EFGH \ IJKL \ mnop \ QRST \ ... \ test .txt \ 0F \ GHIJ \ KLMN \ OPQR \ STIV \ WXYZ \ test.txt
dos problemas:
1) se narfed la cadena resultante (la ruta se trunca como se esperaba, pero va seguida de lo que parece como un nulo de terminación estilo C y un fragmento de la ruta original).
2) Mi cadena original se ha cambiado para que sea idéntica a la cadena de salida.
¿Estoy haciendo algo mal?
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);
}
}
}
No veo cómo su llamada a MeasureText() podría modificar OriginalPath. Si eso realmente está sucediendo, el método MeasureText() está haciendo algo realmente funky. –