measurestring(measurestring算光标)
关于combobox的列表长度,该怎么解决
当焦点到达下拉框顶上时,遍历下拉框每个item,转换为字符串后,根据下拉框控件当前的字体和大小,计算item显示到界面上的长度,与下拉框长度做不对比。计算文本在界面上的显示长度例子:
string measureString = "Measure String";
Font stringFont = new Font("Arial", 16);//可以是下拉框控件的Font属性
// Measure string.
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(measureString, stringFont);
C# WinForm,Graphics.MeasureString 计算不准确的坑
Graphics.MeasureString 可以计算出指定字符串在给定字体 Font 的尺寸 SizeF ,它的计算有坑:如果把字符串拆开成一个一个单字字符串并逐个计算尺寸,然后把 Width 加起来,你会发现并不一定等于完整的字符串计算出来的 Width 。
经过一番折腾,最终发现关键在于字符串中是否有空格。
举个例子
执行结果
字符串 foo 拆开后计算出来的 Width 总和为16,和 foo 完整计算出来 Width 24不同,关键问题显然是空格的 Width 居然为0。
经过测试, Graphics.MeasureString 计算字符串 Width 时会忽略掉头尾的空格后再进行计算,而夹在字符串中间的空格却会纳入计算(等于帮你给字符串自动做了次 .Trim() ,这坑是什么操作?),因此单独计算空格的 Width 实际上计算的空字符串的 Width ,因此为0。
所以,如果你希望单独得到空格的准确 Width ,简单的方法是:
1.计算出"a a"的 Width1 = w1;
2.计算出"aa"的 Width = w2;
3.用w1 - w2,就可以得到空格的 Width 。
c# combobox下拉框长度不够,怎么焦点在下拉框项上时出现提示
当焦点到达下拉框顶上时,遍历下拉框每个item,转换为字符串后,根据下拉框控件当前的字体和大小,计算item显示到界面上的长度,与下拉框长度做不对比。计算文本在界面上的显示长度例子:
string measureString = "Measure String";
Font stringFont = new Font("Arial", 16);//可以是下拉框控件的Font属性
// Measure string.
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(measureString, stringFont);
如何在Winform中计算文字尺寸
c#中gdi+提供了测量文字的具体代码,你可以使用下面的代码:
graphics
g
=
treeview1.creategraphics();
size
size
=
g.measurestring();
你把要测量的文字传入measurestring函数,最后返回的size就是文字的具体尺寸。