如何在C#中使用MeasureString来设置表格列宽?
我有一个非常快(我希望基本)的问题。 我正在为我公司的网站修改一些C#代码。 代码在固定列中为我绘制一个表,其数据从数据库中提取。 表的每一列的高度是固定的(当前),我需要更改它,所以如果字符串是一定长度,因此包装,第二行文本是可见的(而不是被下一行隐藏) 。
根据我的研究,似乎我可以使用MeasureString(因为我知道字体和字符串)来查看字符串是否比我的set table列更长/更宽,如果是这样,则更改行的高度。 但是,我对C#编程很陌生(除了Web内容之外,多年来总体上没有做太多的编程),所以我不确定如何实现所有这些。 我有逻辑,我知道如何改变高度,我只需要知道如何获得一个实际数字我可以使用逻辑来反对使用MeasureString方法(以及如何实例化我可能需要使用的任何变量和函数那个方法)。
我相信你需要对MeasureString(string,font,int)
使用这个重载:
width参数指定返回的SizeF结构的宽度组件的最大值(宽度)。 如果width参数小于字符串的实际宽度,则返回的Width组件将截断为表示适合指定宽度的最大字符数的值。 为了容纳整个字符串,返回的Height组件将调整为允许使用字符换行显示字符串的值。
– 来自以上链接的MSDN页面(强调我的)
// Measure string (you'll need to instansiate your own graphics object, // since you wont have PaintEventArgs) SizeF stringSize = new SizeF(); stringSize = e.Graphics.MeasureString(measureString, stringFont, stringWidth); int cellHeight = stringSize.Height;
你可以使用e.Graphics.MeasureString()
或TextRenderer.MeasureText()
这里描述了每种方法的差异和优点:
TextRenderer.MeasureText和Graphics.MeasureString的大小不匹配
在那里,您还可以找到用法示例,我将跳过此处以避免重复。
MSDN给出了一个示例,您可以通过向控件的OnPaint方法(在实例化控件中)注册事件处理程序,或者通过覆盖OnPaint方法(在inheritance的控件中),或者通过覆盖表单的OnPaint方法来计算它(不是最好的)练习,因为你可能不想为每个表格重绘这样做。) OnPaint方法将允许您访问图形对象,以便您可以调用MeasureString方法。
考虑以下:
上述就是C#学习教程:如何在C#中使用MeasureString来设置表格列宽?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public partial class Form1 : Form { public Form1() { InitializeComponent(); label1.Paint += new PaintEventHandler(label1_Paint); } void label1_Paint(object sender, PaintEventArgs e) { SizeF size = e.Graphics.MeasureString(label1.Text, label1.Font); this.label1.Width = (int)size.Width; this.label1.Height = (int)size.Height; } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020059.html