我正在编写一个自定义替代文本框/标签控件。它需要提供类似的功能,但在我的应用程序上进行优化并且(希望)更快。它需要能够支持多行文本选择。我想知道是否有一种简单的方法来绘制选定的文本?目前看起来唯一的方法可能是计算应该绘制选择矩形的位置并手动绘制它。我希望能够获得关于完成这个任务或任何其他替代方法的建议。谢谢。
我正在编写一个自定义替代文本框/标签控件。它需要提供类似的功能,但在我的应用程序上进行优化并且(希望)更快。它需要能够支持多行文本选择。我想知道是否有一种简单的方法来绘制选定的文本?目前看起来唯一的方法可能是计算应该绘制选择矩形的位置并手动绘制它。我希望能够获得关于完成这个任务或任何其他替代方法的建议。谢谢。
请使用System.Windows.Forms.TextRenderer
。
只需重写System.Windows.Forms.Control
方法:
protected override void OnPaint(PaintEventArgs e)
{
TextRenderer.DrawText(e.Graphics, Text, Font, new Rectangle(0, 0, Width, Height), ForeColor);
}
public override Size GetPreferredSize(Size proposedSize)
{
return TextRenderer.MeasureText(Text, Font);
}
OnFontChanged
或OnSizeChanged
。重写一个应用程序的基本控件是一项重大任务,除非是绝对无法避免的情况,否则不应该进行(在我看来)。如果包含的控件不能满足您的期望,我建议购买第三方控件库,他们的业务是围绕设计和支持这些控件展开的。我使用 Telerik's ASP.NET 控件取得了很多成功,我也看到了许多关于他们其他类型控件的积极评价。
还有许多其他的第三方控件资源可以供您查阅。