我的两难处境与禁止化学武器组织一样,因为我需要找到一种解决办法,在没有太多的通道的情况下展示一条温和的道路,以便我方能轻易地展示一条道路的主要部分。 最终解决办法:使用TextRenderer
sMeasureT>ext><><><>> 类似方法:
public static string GetCompactedString(
string stringToCompact, Font font, int maxWidth)
{
// Copy the string passed in since this string will be
// modified in the TextRenderer s MeasureText method
string compactedString = string.Copy(stringToCompact);
var maxSize = new Size(maxWidth, 0);
var formattingOptions = TextFormatFlags.PathEllipsis
| TextFormatFlags.ModifyString;
TextRenderer.MeasureText(compactedString, font, maxSize, formattingOptions);
return compactedString;
}
<>Important: http://msdn.microsoft.com/en-us/library/system.windows.forms.textformatflags.aspx”rel=“noreferer”TextFormatFlags.ModificationString
实际原因如下: 代码>MeasureText 改变扼杀性论点的方法(compactedString
)成为一条有条理的扼杀。 这一点似乎很受欢迎,因为没有明确的<代码>ref或out
方法参数关键词被具体指明,而且说明是不可更改的。 然而,这无疑是事实。 我假定,通过不安全的法典对新的紧凑的扼杀进行了更新。
作为另一个较次要的注解,因为我想要紧凑地铺一条路,我还使用了TextFormatFlags.PathEllipsis 格式选择。
我认为,在控制上采用一种小的延伸方法,以便任何控制(如文本Box和Label s)能够将其案文置于一条有节制的道路:
public static void SetTextAsCompactedPath(this Control control, string path)
{
control.Text = GetCompactedString(path, control.Font, control.Width);
}
Alternative Ways to Compact a Path:
有家庭种植的紧凑道路解决方案以及一些WinApi电话可以使用。
PathCompactPathEx - Compacting a String Based on Desired String Length in Characters
http://www.pinvoke.net/default.aspx/shlwapi.pathcompactpathex”rel=“noretinger”PathCompactPathEx
。 请注意,这并不考虑字句的字面和深度。
资料来源:PInvoke:。
[DllImport("shlwapi.dll", CharSet=CharSet.Auto)]
static extern bool PathCompactPathEx(
[Out] StringBuilder pszOut, string szPath, int cchMax, int dwFlags);
public static string CompactPath(string longPathName, int wantedLength)
{
// NOTE: You need to create the builder with the
// required capacity before calling function.
// See http://msdn.microsoft.com/en-us/library/aa446536.aspx
StringBuilder sb = new StringBuilder(wantedLength + 1);
PathCompactPathEx(sb, longPathName, wantedLength + 1, 0);
return sb.ToString();
}
Other Solutions
那里还有更多的解决办法,包括定期表达和铺平道路,以确定什么地方放下lip。 我看到: