列表视图列文本操作调整大小

时间:2012-10-15 07:14:35

标签: c#

我有一个列表视图,并且有多个具有长文本值的列,例如具有目标文件路径的列,其值为c:\users\kavya\new\coding\img1000.jpg 非常大的东西。

当用户使用滚动条时,我想根据列的大小调整文本: 宽度非常大的所有数据c:\users\kavya\new\coding\img1000.jpg 应该是可见的,当他将列标题滚动到非常小的时候只需要查看c:\img1000.jpg,但内存应该有整个路径 我们看到类似c:\users\kavya…..的内容。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

通过执行Windows API调用PathCompactPathEx,

[DllImport("shlwapi.dll", CharSet = CharSet.Auto)]
 static extern bool PathCompactPathEx([Out] StringBuilder pszOut, string szPath, int cchMax, int dwFlags);

static string PathShortener(string path, int length)
 {
     StringBuilder sb = new StringBuilder();
     PathCompactPathEx(sb, path, length, 0);
     return sb.ToString();
 }

OR 您可以尝试这样:

string PathShortener(string path)
 {
     const string pattern = @"^(\w+:|\\)(\\[^\\]+\\[^\\]+\\).*(\\[^\\]+\\[^\\]+)$";
     const string replacement = "$1$2...$3";
     if (Regex.IsMatch(path, pattern))
     {
         return Regex.Replace(path, pattern, replacement);
     }
     else
     {
         return path;
     }          
 } 

OR 您可以使用以下内容:

string ellipsisedPath = OriginalPath + '\0';

访问:Add Ellipsis to a Path in a WinForms Program without Win32 API call (revisited)