如何扩展TextBox'的属性来创建一个RichTextBox
本文关键字:属性 创建 RichTextBox 一个 何扩展 扩展 TextBox | 更新日期: 2023-09-27 17:51:21
我的问题是如何扩展一个文本框,这样它可能会开始像RichTextBox的行为?RichTextBox可以添加各种属性:主要是外观。我应该使用这种方法,我扩展TextBox类,并创建一个基本的TextBox,它将包含几个其他文本框,这将表现得像一个大的容器节点包含小型专用节点?
对于初学者来说,要在"+"之后使用可替换颜色的文本,我这样使用:
class CustomTextBox : TextBox
{
List<TextBox> _textboxes = new List<TextBox>();
string _Text="";
List<Color> colorlist = new List<Color>();
public override string Text
{
get{return this._Text;}
set{this._Text = value;}
}
public CustomTextBox()
{
foreach(Color color in (Color[]) Enum.GetValues(typeOf(Color)))
{
colorlist.add(color);
}
this.KeyUp+= new KeyUpEventHandler(TextChangedCheck);
}
int i=0;
private void TextChangedCheck(object sender, KeyUpEventArgs e)
{
if(e.KeyData == Keys.Add)
{
TextBox Temp = new TextBox();
Temp.Text = this.Text;
this.Text = "";
Temp.ForeColor = colorlist[i];
i++;
this._textboxes.Add(Temp);
this.Controls.Add(_textboxes[i]);
e.Handled = true;
}
}
}
编辑:
这个问题的主要目的是使用自己的属性来扩展文本框,使其具有类似RTB的行为,而不使用图形或相关的
我不得不猜测你在这里真正想要实现什么。
但是如果你想要一个带有格式化文本(FT)的控件,并且真的真的真的不想要一个RichTextBox,我认为你不应该为每一块FT创建一个新的嵌入式TextBox。
相反,你应该自己写FT,也许在一个面板上与DrawString和使用只有一个文本框的文本输入。一旦你接受了挑战,这真是一个有趣的项目。当然,你必须仔细考虑你的格式,还要考虑各种各样的接口问题。
上周,我通过使用ListView避免了一个小型帮助系统的RTF;它只按行进行格式化,使用第一个字符从一打左右的列表中表示格式。