科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Visual Basic.NET快速开发MIS系统(2)

Visual Basic.NET快速开发MIS系统(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我们的编程工作大部分都完成了,现在只需要增加新的继承窗体Form就可,方法是在Form项或项目菜单或工具栏选择添加继承的窗体,在弹出的Form中输入窗体名frmUser按打开,在选择继承器中选择FrmModule确定就生成了一新的窗体。 继承的继承如下:

作者: 来源:中国IT实验室 2008年6月6日

关键字: MIS 开发 VB vb.net Windows

  • 评论
  • 分享微博
  • 分享邮件
我们的编程工作大部分都完成了,现在只需要增加新的继承窗体Form就可,方法是在Form项或项目菜单或工具栏选择添加继承的窗体,在弹出的Form中输入窗体名frmUser按打开,在选择继承器中选择FrmModule确定就生成了一新的窗体。 继承的继承如下:
  
  Public Class frmUser:Inherits frmModel
  
  在生成的窗体中增加一些必要的控件,同时与根据表中字段对应关系设置的TabIndex的值。
  
  通过设置控件TabIndex的值,可以把该控件与物理表中的字段关系对应起来,如TabIndex为1,则对应物理表的第1个字段,如TabIndex为2,则对应物理表的第2个字段,如此例推。这方便把输入控件的数据写入表中,把网格数据写入输入控件中,这是技巧,其实现过程见方法:WriteDateToArray(),DataGridToText()。
  
  指定物理表
  
  在类frmUser的New方法中指定所操作的物理表名tUser。为什么要在这里指定表名呢?是因为程序在调用frmUser前,先必须申请frmUser的实类,同时进行实类化,自动执行构造函数New(),执行New()时,就把我们所要完成的功能代码放在这里,让它们自动执行。
  
  Public Sub New()
   MyBase.New()
   '该调用是 Windows 窗体设计器所必需的。
   InitializeComponent()
   gCls.UpdateTable = "tUser"
   '在 InitializeComponent() 调用之后添加任何初始化
  End Sub
  
  
  更改控件的属性,隐藏不需要的控件
  
  在 frmUser的Load事件中更改DataGrid1的标题并隐藏不需要的控件:
  
  Private Sub frmUser_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  MyBase.Load
   DataGrid1.CaptionText = "用户列表"
   cbo.Visible = False
   Me.Label6.Visible = False
  End Sub
  
  按同样方法,生成下面的窗体frmInfo,在此窗体上增加一些新控件,如下:
  
   
  
  窗体frmInfo类继承frmModel:
  
  Public Class frmInfo:Inherits frmModel
  在类frmInfo的New方法中指定所操作的物理表名tInfo。
  Public Sub New()
   …
   gCls.UpdateTable = " tInfo "
  End Sub
  
  现在,ToolBar1上增加了新的方法"导入",应该怎样处理呢?事实上只要在frmInfo的ToolBar1_ButtonClick事件中识别时"导入",写要处理的任务就可,如下:
  
  Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
   Select Case e.Button.Text
   Case "导入"
  …
   End Select
  End Sub
  
  通过上面的窗体继承方法,凡是对物理表的操作都可以通过这些方法来完成,而不必再重复编写代码。
  
  新的要求
  
  现在假设有物理表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。
  
  
  
  总结
  
  通过以上面事例的介绍,可以生成若干同类似的窗体。不论操作多少表,都可通过窗体继承得到,物理表的操作一次性完成,不必在每个窗体中写代码,所完成的功能及界面布局全在模板窗体中完成。这样极大地降低了编写代码的工作量,同时为设置窗体整体外观提供以方便,提高了开发效率,也降低了软件的测试和维护的工作量。继承是面向对象的开发语言的一个重要组成部分,在程序设计中充分的利用继承关系,可以最大范围的提高程序的可利用性,使得用最少的代码开发比较大的应用程序。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章