识别光标在TextBox中的位置并更改背景颜色
本文关键字:背景 颜色 位置 光标 TextBox 识别 | 更新日期: 2023-09-27 18:22:11
我正在玩一个玩具文本编辑器。我想模仿Notepad++的高亮显示当前行(更改光标所在行的背景色)。
我如何在C#中做到这一点?
我认为你不能使用简单的文本框,只能使用RichTextBox。这个链接将让您开始了解一些实现"高亮显示当前行"类型UI的想法。
这是可以做到的。我还没有解决所有问题,但您需要创建自己的控件,继承TextBox控件。您将覆盖OnPaint事件,并在那里绘制自己的背景。这里已经足够让你开始了。
public partial class MyTextBox : TextBox
{
public MyTextBox()
{
InitializeComponent();
// Need the following line to enable the OnPaint event
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
}
protected override void OnPaint(PaintEventArgs e)
{
// this demonstrates the concept, but doesn't do what you want
base.OnPaint(e);
Point p = this.GetPositionFromCharIndex(this.SelectionStart);
e.Graphics.FillRectangle(Brushes.Aqua, 0, p.Y, this.Width, (int)e.Graphics.MeasureString("A", this.Font).Height);
}
}