Tôi đang tìm kiếm một cách để chèn một dấu chấm lửng trong một đường dẫn C#, và tìm thấy một câu trả lời ở đây trên stackoverflow: C# Path Ellipsis without Win32 API callThêm Ellipsis đến một con đường trong một chương trình WinForms mà không cuộc gọi Win32 API (revisited)
Sử dụng RTM Phiên bản của VS2010 và .Net 4.0, tôi không thể có được phương pháp được đề xuất để hoạt động. Tôi đã tìm kiếm 'Mã ví dụ thuần và tìm thấy có sử dụng cùng một phương pháp, nhưng nó không thành công theo cùng một cách.
Bạn có thể thấy chuỗi tôi đang cố gắng rút ngắn mã của mình bên dưới.
Sau khi gọi phương thức MeasureText, cả hai chuỗi đầu vào (OriginalName) và chuỗi đầu ra (ellipsisedName) trông như thế này:
d: \ abcd \ EFGH \ ijkl \ mnop \ qrst \ ... \ test .txt \ 0F \ GHIJ \ KLMN \ OPQR \ Stiv \ WXYZ \ test.txt
Hai vấn đề:
1) chuỗi kết quả được narfed (con đường được cắt ngắn như mong đợi, nhưng sau đó là những gì vẻ giống như một kiểu C kết thúc null và một đoạn của đường dẫn gốc).
2) My chuỗi gốc được thay đổi giống hệt với chuỗi đầu ra.
Tôi có làm gì sai không?
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);
}
}
}
Tôi không thấy cách gọi của bạn đến MeasureText() có thể có thể sửa đổi OriginalPath. Nếu điều đó thực sự xảy ra, phương thức MeasureText() đang làm một điều gì đó thực sự sôi nổi. –