我们在.NET 2.0中有许多多行,可滚动的Winforms文本框控件,需要实现分页,以便用户只能通过一次移动单个页面(完全控件的文本值)来导航其内容
作为其中的一部分,我需要获取可在屏幕上随时可见的文本全行数,以计算文本框包含的页数。
我很确定没有Windows消息可以让我直接获取这些信息,也无法找到可接受的解决方案来解决这个问题。
以下是我们已经实施的当前解决方案,这往往会给出至少一行的舍入误差,因此它不太成功。
public int LinesPerPage
{
get
{
return (int)(this.Height / this.Font.Height);
}
}
理想情况下,我想知道在向控件绘制文本时使用的算法,但如果这不可用,那么人们会非常感谢其他建议。
答案 0 :(得分:0)
你可以试试这个:
public int LinesPerPage
{
get
{
return (int)(this.ClientSize.Height / this.Font.Height);
}
}
答案 1 :(得分:0)
System.Drawing.Graphics类有一个名为MeasureString的方法。该方法的一个重载返回适合的行(根据传入的其他参数可见的内容)。