1

我正在玩玩具文本编辑器。我想模仿 Notepad++ 的高亮当前行(更改光标所在行的背景颜色)。

我怎么能在 C# 中做到这一点?

4

2 回答 2

2

可以办到。我还没有完全解决,但您需要创建自己的控件,继承自 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);
    }
}
于 2013-07-11T20:22:02.957 回答
2

我认为您不能使用简单的文本框,只能使用 RichTextBox。此链接将让您开始了解实现“突出显示当前行”类型 UI 的一些想法。

于 2013-07-11T19:34:04.020 回答