重载Windows控件2007-05-24 本站 在vb.net中,用户可以根据一个已经存在的控件继承出一个新的Windows控件,假设现在需要一种Text控件,当用tab键移到该控件时,整个Text中的内容都被highlight了,在vb 6.0中,这可以通过编写一个新的Dll动态库,但是Textbox控件在工具箱中被屏蔽掉了,并且失去了Textbox的一些有用的事件。而在vb 7.0中则可以通过继承Textbox类而派生出一个新的类。
下面举一个例子,通过Windows设计环境,建立一个窗体,在这个窗体中有两个Textbox,通过在"Project|Add User Control"菜单给工程加入一个名为"HitextBox.vb"的对象,使这个控件继承TextBox的属性,而不是要自定义一个全新的控件,如下:
Public class HtextBox
Inherits Textbox
下面先编译一下整个工程,新加入的HtextBox控件将会出现在左边的工具栏的底部。用户可以在建立的任何一个Windows窗体中建立一个HtextBox类对象。
在类的代码中,插入如下代码以实现highlight的功能:当你用Tab键移到Textbox时,Textbox的全部内容变为hightlight。
Public class HttextBox Inherits Textbox Public Sub NewMybase.New "Add Event event handler AddHandler Enter,_New System.EventHandler(AddressOf_ Me.Ht_Enter)End Sub "---------------- "Enter event handler is inside the class Protected Sub Ht_Enter(Byval sender as Object,_ Byval e as System.EventArgs)Me.selectionStart=0Me.selectionLength=Me.text.length End SubEnd Class
这就是所有的过程,通过添加大概10行代码就做出了一个继承Windows控件派生出来的控件。