转:Visual Basic.NET快速开发MIS系统(4)
2024-07-10 13:02:22
供稿:网友
新的要求
现在假设有物理表tchange与tinfo表是一关联表,通过关键字段fid关联,既表tchange的字段fid的数据是通过tinfo表提供,其它来源于用户的输入,要生成tchange表数据处理的窗体。要实现这些功能,我们同样通过窗体的继承来完成(有物理表tsub也如此)。
.先定义窗体模板frmmodul2,此frmmodul2继承frmmodul, 即:public class frmmodul2: inherits asset.frmmodel。 在frmmodul2中加入列表盒控制listbox1和其它控制,布置好后如下图:
.在frmmodul2的load事件中填充listbox的数据并隐藏不必要的控件。
private sub frmmodul2_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
filllistbox(me.listbox1)
me.tlbadd.visible = false
end subpublic
sub filllistbox(byval listbox as listbox)
dim strsql as string
strsql = "select distinct fid || ' ' || fname as a from tinfo "
dim dr as oledb.oledbdatareader
dr = db.sqldatareader(strsql)
while dr.read
listbox.items.add(dr.item("a"))
end while
dr.close()
end sub
.当单击listbox1时选择当前数据并填充至txt1, txt3中
public overridable sub listbox1_mousedown(byval sender as object, byval e as system.windows.forms.mouseeventargs) handles listbox1.mousedown
dim i, txt
i = listbox1.selectedindex
txt = listbox1.items(i)
txt1.text = txt.substring(0, 15)
txt3.text = txt.substring(16, len(txt) - 16).trim
txtid.text = gcls.getmaxsystemid + 1
gcls.fillgrid(datagrid1)
gisupdate = false
end sub
好了,我们的窗体模板又做好了,下面我们通过窗体模板frmmodul2生成继承窗体frmchange,即:
public class frmchange:inherits asset.frmmodul2
生成的窗体如下图:
依照前面设置所操作的表tchange和其它,不必写其它代码。
public sub new()
…
gcls.updatetable = "tchange"
end sub
同样可生成操作表tsub的窗体frmsub。
总结
通过以上面事例的介绍,可以生成若干同类似的窗体。不论操作多少表,都可通过窗体继承得到,物理表的操作一次性完成,不必在每个窗体中写代码,所完成的功能及界面布局全在模板窗体中完成。这样极大地降低了编写代码的工作量,同时为设置窗体整体外观提供以方便,提高了开发效率,也降低了软件的测试和维护的工作量。继承是面向对象的开发语言的一个重要组成部分,在程序设计中充分的利用继承关系,可以最大范围的提高程序的可利用性,使得用最少的代码开发比较大的应用程序。