路径显示不下时,中间显示省略号

开发环境:VS2012 C#

//路径显示不下时,中间显示省略号
class CShowShortPath
{
public CShowShortPath(string str)
{
//统一成反斜杠
str = str.Replace(‘/‘, ‘\\‘);

//收集反斜杆的位置
List<int> indexs = new List<int>();
for (int i = 0; i < str.Length; i++)
{
if (‘\\‘ == str[i])
{
indexs.Add(i);
}
}

//收集可能的显示形式
m_strCanShows.Add(str);
for (int j = indexs.Count / 2, i = j - 1; ; )
{
m_strCanShows.Add(GetShortShow(ref str, ref indexs, i, j));
if ((!ValidIndex(indexs,i)) && (!ValidIndex(indexs,j)) )
{
break;
}
if ((indexs.Count - 1 - j) > (i - 0))
{
j++;
}
else
{
i--;
}
}

}
public List<string> m_strCanShows = new List<string>();
private string GetShortShow(ref string str, ref List<int> indexs, int indexLeft, int indexRight)
{
string str1 = "", str2 = "";
if (ValidIndex(indexs,indexLeft))
{
str1 = str.Substring(0, indexs[indexLeft]);
}
if (ValidIndex(indexs,indexRight))
{
str2 = str.Substring(indexs[indexRight] + 1, str.Length - indexs[indexRight] - 1);
}
return str1 + "..." + str2;
}

private bool ValidIndex( List<int> indexs, int index)
{
return ( index >= 0 ) && ( index < indexs.Count ) ;
}

};

下面的类,根据TextBox的宽度显示文件路径:
public class CShow
{
public static void ShowSinglePathIfNoSpace(string strPath, TextBox txtBox)
{
ImeBase.CShowShortPath show = new ImeBase.CShowShortPath(strPath);
for (int i = 0; i < show.m_strCanShows.Count; i++)
{
int iNeedWidth = TextRenderer.MeasureText(show.m_strCanShows[i], txtBox.Font).Width;
if (txtBox.Width > iNeedWidth)
{
txtBox.Text = show.m_strCanShows[i];
break;
}
}
}
}

原文地址:https://www.cnblogs.com/he-zhidan/p/11408842.html

时间: 2024-07-31 08:20:28

路径显示不下时,中间显示省略号的相关文章

tomat 欢迎页面设置在WEB-INF目录下时不显示问题

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http

XCode显示iOS Simulators时不显示系统版本号并出现Identifier(UUID)

如果出现如下的显示问题,说明你添加了多个相同系统版本的iOS Simulators: 打开Windows->Devices,查看已经出现了相同版本的模拟器: 那么我们删除一些相同的模拟器,即可解决问题. 以上方法不一定每个人都适合,我还收集了其它的方法以供参考: https://forums.developer.apple.com/thread/9586 http://stackoverflow.com/questions/29274517/simulator-name-is-shown-wit

ng1中 如何用双向绑定 实现单向绑定的初始时不显示双括号效果?

ng1中 如何用双向绑定 实现单向绑定(ng-bind就可以不显示{{}})的初始时不显示双括号效果? AngularJS 实例 页面加载时防止应用闪烁: <div ng-app=""> <p ng-cloak>{{ 5 + 5 }}</p> </div> 尝试一下 » 定义和用法 ng-cloak 指令用于在 AngularJS 应用在加载时防止 AngularJS 代码未加载完而出现的问题. AngularJS 应用在加载时,文档可能

div里面的内容超出自身高度时,显示省略号

1.给DIV设置属性:width: 200px; text-overflow: ellipsis; overflow: hidden; 当div里面的内容总宽度找过 200PX的时候,超出的部分会以"..."的形式显示. 2.上面那个案例之适用于单行文本的现实,才会有效.但当div里面的内容出现多行的时候则不能达到预期的效果.下面是解决多行的时候显示"..."的方案. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时

五种情况下会刷新控件状态(刷新控件状态才能刷新所有子FWinControls的显示): 在TWinControls.PaintControls中,对所有FWinControls只是重绘了边框,而没有整个重绘这些FWinControl子控件.那么什么时候才整个重绘全部FWinControls呢?这时候,就不是一个单纯的WM_PAINT来解决控件重绘的问题了,而是这个TWinControl.UpdateShowing函数: procedure TWinControl.UpdateShowing; v

android中Textview 和图片同时显示时,文字省略号显示,图片自动靠到右边

很纠结的一个标题,实在是不知道怎么去描述这个现象. 上图片吧,先看看需求是什么样的. 1.需求: ? 视频与票的图标跟在标题后面显示,当标题过长时icon显示到省略号…后(textview省略号显示,图标自动靠后). 2. 问题解决 ? 本来是一个很正常的需求,看起来很简单,但是做起来却遇到了很蛋疼的问题,怎么搞的都不行,堵了很长时间,下面说一下解决方案,遇到这样问题的朋友可以使用. TextView可以通过 android:ellipsize="end" android:single

UIButton的selected设为TRUE时在按下时显示自定义的背景图

在UIButton的selected设为TRUE后,需要在按钮高亮时,显示自定义的背景图. 经研究hightLighted和selected这两个状态是可以重叠的,就是button可以同时处于selectec和highlighted两个状态下. 从UIControlState的定义也可以看出: typedef NS_OPTIONS(NSUInteger, UIControlState) { UIControlStateNormal       = 0, UIControlStateHighlig

html实现钝角效果;html实现限制一行字数的显示,超出的部分用省略号(....)来代替

前端实现div框边角的钝化虽然简单,但是有时候突然想不到,特此写下几句实现方法,以便记忆. 实现div框四个角都钝角的操作:设置 div : border-radius=10px; 实现div框一个角的钝角效果 :设置div :border-top-left-radius=10px; border-top-right-radius=10px; border-bottom-left-radius=10px; border-bottom-right-radius=10px; html实现限制一行字数

Linux下ls命令显示符号链接权限为777的探索

Linux下ls命令显示符号链接权限为777的探索 --深入ls.链接.文件系统与权限 一.摘要 ls是Linux和Unix下最常使用的命令之一,主要用来列举目录下的文件信息,-l参数允许查看当前目录下所有可见文件的详细属性,包括文件属性.所有者.文件大小等信息.但是,当其显示符号链接的属性时,无论其指向文件属性如何,都会显示777,即任何人可读可写可执行.本文从ls命令源码出发,由浅入深地分析该现象的原因,简略探究了Linux 4.10下的符号链接链接.文件系统与权限的源码实现. 关键词:Li