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 に答える