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

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

开发环境: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;
                    }
                }
            }
        }
相关文章
|
6月前
span标签显示固定长度显示省略号,光标放上显示全部
span标签显示固定长度显示省略号,光标放上显示全部
|
JavaScript 前端开发
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示
|
2天前
Excel怎么设置打印时页眉的左边显示“第几页”
在Excel中设置页眉显示“第几页”:点击【页面布局】→【页边距】→【页眉/页脚】→【自定义页眉】,左输入框输“第页”,插入页码,确认两次,预览即见页眉左侧的页码。
26 1
|
6月前
|
前端开发
input框点击时去掉默认的外层边框
input框点击时去掉默认的外层边框
31 0
|
6月前
select框默认选项为空白
select框默认选项为空白
|
6月前
layUI table 内容超出宽度怎么换行显示,而不是显示省略号
layUI table 内容超出宽度怎么换行显示,而不是显示省略号
123 0
文本超出显示省略号--截取字段
文本超出显示省略号--截取字段
|
开发工具
vim中跳到第一行和最后一行,保存格式并去掉#粘贴,去掉黄色阴影
vim中跳到第一行和最后一行,保存格式并去掉#粘贴,去掉黄色阴影
|
Shell
在一个页面的多个位置同时显示不同的Toastr提示信息
在一个页面的多个位置同时显示不同的Toastr提示信息
162 0
在一个页面的多个位置同时显示不同的Toastr提示信息
文本超出多行显示省略号 移动端禁止双击缩放
文本超出多行显示省略号 移动端禁止双击缩放