2013-07-11 29 views

回答

2

我不认为你可以用一个简单的文本框,只用一个RichTextBox。 This link将帮助您开始实施“突出显示当前行”类型的用户界面。

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); 
    } 
}