【问题标题】:Winforms textbox lines per page每页 Winforms 文本框行
【发布时间】:2009-07-30 11:02:40
【问题描述】:

我们在 .NET 2.0 中有许多多行、可滚动的 Winforms 文本框控件,它们需要实现分页,以允许用户一次仅通过移动单个页面(整个控件的文本价值)来导航其内容.

作为其中的一部分,我需要获取可以在任何时候在屏幕上可见的完整文本行数,以计算出文本框包含多少页。

我很确定没有任何 Windows 消息可以让我直接获取此信息,我也无法为此问题制定出可接受的解决方案。

以下是我们目前实施的解决方案,这往往会偶尔产生至少一行的舍入误差,因此不太成功。

public int LinesPerPage
{
    get 
    {
        return (int)(this.Height / this.Font.Height); 
    }
}

理想情况下,我想知道在将文本绘制到控件时使用的算法,但如果这不可用并且人们提出的其他建议将不胜感激。

【问题讨论】:

  • 如果您使用的是可滚动的文本框,我假设您想要文本框在滚动之前可以容纳的行数?

标签: c# winforms .net-2.0


【解决方案1】:

你可以试试这个:

public int LinesPerPage    
{     
   get   
   {      
      return (int)(this.ClientSize.Height / this.Font.Height);
   }
}

【讨论】:

  • 我假设文本行之间也有一些垂直填充?不需要考虑吗?
  • 我尝试了上述方法,它似乎适用于默认文本框和字体设置,我不确定是否可以更改行之间的填充,但如果可以,那么可以
【解决方案2】:

System.Drawing.Graphics 类有一个名为 MeasureString 的方法。该方法的重载之一返回拟合的行(根据传入的其他参数可见的内容)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多