看类的源码TextBoxBase
,有两个构造函数:
internal TextBoxBase()
{
base.SetState2(2048, true);
this.textBoxFlags[TextBoxBase.autoSize | TextBoxBase.hideSelection | TextBoxBase.wordWrap | TextBoxBase.shortcutsEnabled] = true;
base.SetStyle(ControlStyles.FixedHeight, this.textBoxFlags[TextBoxBase.autoSize]);
base.SetStyle(ControlStyles.UserPaint | ControlStyles.StandardClick | ControlStyles.StandardDoubleClick | ControlStyles.UseTextForAccessibility, false);
this.requestedHeight = base.Height;
}
和
static TextBoxBase()
{
// Note: this type is marked as 'beforefieldinit'.
TextBoxBase.autoSize = BitVector32.CreateMask();
TextBoxBase.hideSelection = BitVector32.CreateMask(TextBoxBase.autoSize);
TextBoxBase.multiline = BitVector32.CreateMask(TextBoxBase.hideSelection);
TextBoxBase.modified = BitVector32.CreateMask(TextBoxBase.multiline);
TextBoxBase.readOnly = BitVector32.CreateMask(TextBoxBase.modified);
TextBoxBase.acceptsTab = BitVector32.CreateMask(TextBoxBase.readOnly);
TextBoxBase.wordWrap = BitVector32.CreateMask(TextBoxBase.acceptsTab);
TextBoxBase.creatingHandle = BitVector32.CreateMask(TextBoxBase.wordWrap);
TextBoxBase.codeUpdateText = BitVector32.CreateMask(TextBoxBase.creatingHandle);
TextBoxBase.shortcutsEnabled = BitVector32.CreateMask(TextBoxBase.codeUpdateText);
TextBoxBase.scrollToCaretOnHandleCreated = BitVector32.CreateMask(TextBoxBase.shortcutsEnabled);
TextBoxBase.setSelectionOnHandleCreated = BitVector32.CreateMask(TextBoxBase.scrollToCaretOnHandleCreated);
TextBoxBase.EVENT_ACCEPTSTABCHANGED = new object();
TextBoxBase.EVENT_BORDERSTYLECHANGED = new object();
TextBoxBase.EVENT_HIDESELECTIONCHANGED = new object();
TextBoxBase.EVENT_MODIFIEDCHANGED = new object();
TextBoxBase.EVENT_MULTILINECHANGED = new object();
TextBoxBase.EVENT_READONLYCHANGED = new object();
}
第一个构造函数是内部的,因此只有定义该类型的同一程序集才能访问它。第二个是静态构造函数,它在类的第一次访问时被调用。
现在回答你的问题:
如果抽象类没有构造函数,则它不打算用于继承。还有其他课程,例如TextBox
或RichTextBox
满足您的需要。
该课程的架构师TextBoxBase
为所有文本框设计了一个文本框基础,具有共同的 OOP 原则:封装。封装简称为隐藏复杂类型的实现细节。而且TextBoxBase
相当复杂。