如何绘制选定的文本

时间:2009-08-27 17:04:27

标签: c# .net

我正在为Textbox / Label控件编写自定义替换。它需要提供类似的功能,但会在我的应用程序环境中进行优化和(希望)更快。它需要能够支持多行文本选择。我想知道是否有一种简单的方法来绘制选定的文字?现在,看起来唯一的方法是计算应该绘制选择矩形的位置并手动绘制它。我希望得到关于实现这个或任何替代方法的最简单方法的建议。感谢。

2 个答案:

答案 0 :(得分:2)

使用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);
}

当然,如果您需要实施自定义行为,则需要处理更多事件,例如OnFontChangedOnSizeChanged

如果您要查找的内容是针对这些控件中的特定文本(选定文本),您可能需要查看此article。拼写检查库(SharpSpell)的源代码也与本文相关联。

答案 1 :(得分:0)

重写应用程序的基本控件是一项重大任务,除非作为绝对的最后手段(IMO),否则不应该这样做。如果包含的控件不符合您的异议,我建议购买第三方控件库,其业务建立在设计和支持这些控件之上。我使用Telerik's ASP.NET控件获得了很多成功。我已经看到很多关于其他控件行的正面陈述。

您还可以查看其他许多第三方控件来源。