我正在为Textbox / Label控件编写自定义替换。它需要提供类似的功能,但会在我的应用程序环境中进行优化和(希望)更快。它需要能够支持多行文本选择。我想知道是否有一种简单的方法来绘制选定的文字?现在,看起来唯一的方法是计算应该绘制选择矩形的位置并手动绘制它。我希望得到关于实现这个或任何替代方法的最简单方法的建议。感谢。
答案 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);
}
当然,如果您需要实施自定义行为,则需要处理更多事件,例如OnFontChanged
或OnSizeChanged
。
如果您要查找的内容是针对这些控件中的特定文本(选定文本),您可能需要查看此article。拼写检查库(SharpSpell)的源代码也与本文相关联。
答案 1 :(得分:0)
重写应用程序的基本控件是一项重大任务,除非作为绝对的最后手段(IMO),否则不应该这样做。如果包含的控件不符合您的异议,我建议购买第三方控件库,其业务建立在设计和支持这些控件之上。我使用Telerik's ASP.NET控件获得了很多成功。我已经看到很多关于其他控件行的正面陈述。
您还可以查看其他许多第三方控件来源。