私はおもちゃのテキストエディタで遊んでいます。Notepad++ の現在の行の強調表示を模倣したい (カーソルがある行の背景色を変更する)。
C#でそれを行うにはどうすればよいですか?
それはできます。すべてを解決したわけではありませんが、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);
}
}
RichTextBox のみで、単純なテキスト ボックスではできないと思います。このリンクは、「現在の行を強調表示」タイプの UI を実装するためのいくつかのアイデアを開始するのに役立ちます。