Wilson Kutegeka

Microsoft MVP - Visual Basic www.clinicmaster.net

December 2010 - Posts

Code Generation; Generate Visual Basic Code Automatically

Introduction

 If you develop multitier applications that use a consistent data access framework, you will realize that most of your codes follow a certain pattern, and can be generated automatically.

This code generator is based on a Data Access Framework (DAF) from my earlier post.

Building a Data Access Framework (DAF)

It presents a simple way of building own code generator, you can build a tool that will automatically generate code at presentation and middle layers, importantly in a way that you want them to be.

Generate Visual Basic Code Automatically

Form that generates the Visual Basic Code

If you have an object say Customers as shown in form above, the code generator will create three files that you need to add to you’re solution

  • Customers Object.vb

This contains the Customers class, which defines methods such as SaveData, UpdateData, DeleteData, GetCustomers etc.

  • frmCustomers.Designer.vb

This is the partial class for the form frmCustomers

  • frmCustomers.vb

This contains code behind the form frmCustomers

 Key objects/methods in this code generator include:-


Fields
This class helps to work with key object’s properties that are enough for us to create the codes and user interfaces.

Public Class Fields

 

#Region " Fields "

 

    Private m_TableName As String

 

    Private m_Name As String

    Private m_Caption As String

    Private m_DataType As String

    Private m_Key As String

    Private m_References As String

 

#End Region

 

#Region " Properties "

 

    Public Property TableName() As String

        Get

            Return m_TableName

        End Get

        Set(ByVal value As String)

            m_TableName = value

        End Set

    End Property

 

    Public Property Name() As String

        Get

            Return m_Name

        End Get

        Set(ByVal value As String)

            m_Name = value

        End Set

    End Property

 

    Public Property Caption() As String

        Get

            Return m_Caption

        End Get

        Set(ByVal value As String)

            m_Caption = value

        End Set

    End Property

 

    Public Property DataType() As String

        Get

            Return m_DataType

        End Get

        Set(ByVal value As String)

            m_DataType = value

        End Set

    End Property

 

    Public Property Key() As String

        Get

            Return m_Key

        End Get

        Set(ByVal value As String)

            m_Key = value

        End Set

    End Property

 

    Public Property References() As String

        Get

            Return m_References

        End Get

        Set(ByVal value As String)

            m_References = value

        End Set

    End Property

 

#End Region

 

#Region " Constructors "

 

    Public Sub New()

        MyBase.New()

    End Sub

 

    Public Sub New(ByVal tableName As String)

        MyClass.New()

        Me.TableName = tableName

    End Sub

 

#End Region

 

End Class

FieldsList
This method returns the object’s properties list that has been set through the datagridview

Private Function FieldsList() As List(Of Fields)

 

        Dim name As String

        Dim caption As String

        Dim dataType As String

        Dim key As String

        Dim references As String

 

        Dim lFields As New List(Of Fields)

 

        Try

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._ClassName = Me.txtClassName.Text

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            If Me.dgvFields.RowCount <= 1 Then Throw New ArgumentException("Must Register At least one field!")

 

            For Each row As DataGridViewRow In Me.dgvFields.Rows

 

                If row.IsNewRow Then Exit For

 

                name = CStr(row.Cells.Item(Me.colName.Name).Value)

                If String.IsNullOrEmpty(name) Then Throw New ArgumentException("All entries for name must be entered!")

 

                dataType = CStr(row.Cells.Item(Me.colDataType.Name).Value)

                If String.IsNullOrEmpty(dataType) Then Throw New ArgumentException("All entries for data type must be selected!")

 

                key = CStr(row.Cells.Item(Me.colKey.Name).Value)

                If String.IsNullOrEmpty(key) Then

                    Throw New ArgumentException("All entries for key must be selected!")

                ElseIf key.ToUpper().Equals("Foreign".ToUpper()) Then

                    references = CStr(row.Cells.Item(Me.colReferences.Name).Value)

                    If String.IsNullOrEmpty(references) Then Throw New ArgumentException("References must have a value for every key set as foreign!")

                End If

 

            Next

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            For rowNumber As Integer = 0 To Me.dgvFields.RowCount - 2

 

                Dim oFields As Fields = New Fields(Me._ClassName)

 

                name = CStr(Me.dgvFields.Item(Me.colName.Name, rowNumber).Value)

                caption = CStr(Me.dgvFields.Item(Me.colCaption.Name, rowNumber).Value)

                If String.IsNullOrEmpty(caption) Then caption = String.Empty

                dataType = CStr(Me.dgvFields.Item(Me.colDataType.Name, rowNumber).Value)

                key = CStr(Me.dgvFields.Item(Me.colKey.Name, rowNumber).Value)

                references = CStr(Me.dgvFields.Item(Me.colReferences.Name, rowNumber).Value)

                If String.IsNullOrEmpty(references) Then references = String.Empty

 

                With oFields

                    .TableName = Me._ClassName

                    .Name = name

                    .Caption = caption

                    .DataType = dataType

                    .Key = key

                    .References = references

                End With

 

                lFields.Add(oFields)

            Next

 

            Return lFields

 

        Catch ex As Exception

            Throw ex

 

        End Try

 

    End Function

GenerateFormClass
This method generates the code behind form

Private Sub GenerateFormClass()

 

        Try

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._FieldsList = FieldsList()

            Dim outputDirectory As String = Me.txtOutputDirectory.Text

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            If String.IsNullOrEmpty(outputDirectory) Then Throw New ArgumentException("Enter out put directory!")

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            If Not Directory.Exists(outputDirectory) Then Directory.CreateDirectory(outputDirectory)

            Dim path As String = outputDirectory + "\frm" + Me._ClassName + ".vb"

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Option Strict On")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Public Class frm" + Me._ClassName)

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormClass.Append("#Region "" Fields """)

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("#End Region")

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Private Sub frm" + Me._ClassName + "_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Try")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.WaitCursor()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Using o" + Me._ClassName + " As New DAFSampleData." + Me._ClassName + "(""."", ""DAFSample"")")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("o" + Me._ClassName + ".SetConString(DAF.SQLDb.SQLConnectionMode.WindowsAuthentication)")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Using")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Catch ex As Exception")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("MessageBox.Show(ex.Message)")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Finally")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.Default()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End Try")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Sub")

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Private Sub frm" + Me._ClassName + "_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("If e.KeyCode = Keys.Enter Then Me.ProcessTabKey(True)")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Sub")

 

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Close()")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Sub")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormClass.Append("Private Sub ResetControls()")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("For Each ctlReset As Control In Me.Controls")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("If TypeOf ctlReset Is TextBox Then")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("CType(ctlReset, TextBox).Clear()")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("ElseIf TypeOf ctlReset Is DateTimePicker Then")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("CType(ctlReset, DateTimePicker).Value = Today")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("CType(ctlReset, DateTimePicker).Checked = True")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End If")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Next")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Sub")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormClass.Append("Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Try")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.WaitCursor()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Using o" + Me._ClassName + " As New DAFSampleData." + Me._ClassName + "()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("With o" + Me._ClassName)

            Me._FormClass.AppendLine()

            Me._FormClass.Append(Me.SetDeleteParameters)

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Dim deleteMSG As String = .Delete")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("MessageBox.Show(deleteMSG)")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Me.ResetControls()")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End With")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End Using")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Catch ex As Exception")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("MessageBox.Show(ex.Message)")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Finally")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.Default()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End Try")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Sub")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormClass.Append("Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(Me.KeyDeclarationList)

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Dim o" + Me._ClassName + " As New DAFSampleData." + Me._ClassName + "()")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Dim " + Me._ClassName.Substring(0, 1).ToLower() + Me._ClassName.Substring(1) + " As New DataTable()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Try")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.WaitCursor()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(Me.SetSearchParameters)

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(Me._ClassName.Substring(0, 1).ToLower() + Me._ClassName.Substring(1) + " = o")

            Me._FormClass.Append(Me._ClassName + ".Get" + Me._ClassName + "(")

            Me._FormClass.Append(Me.KeyArgumentsList)

            Me._FormClass.Append(").Tables(""" + Me._ClassName + """)")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.ResetControls()")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Dim dataSource As EnumerableRowCollection(Of DataRow) = ")

            Me._FormClass.Append(Me._ClassName.Substring(0, 1).ToLower() + Me._ClassName.Substring(1) + ".AsEnumerable()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(Me.LoadDataControls)

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Catch ex As Exception")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("MessageBox.Show(ex.Message)")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Finally")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.Default()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End Try")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Sub")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormClass.Append("Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Try")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.WaitCursor()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Using o" + Me._ClassName + " As New DAFSampleData." + Me._ClassName + "()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("With o" + Me._ClassName)

            Me._FormClass.AppendLine()

            Me._FormClass.Append(Me.SetObjectParameters)

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("If .Save() Then MessageBox.Show(""record successfully saved!"")")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Me.ResetControls()")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End With")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End Using")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Catch ex As Exception")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("MessageBox.Show(ex.Message)")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Finally")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.Default()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End Try")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Sub")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormClass.Append("Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Try")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.WaitCursor()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Using o" + Me._ClassName + " As New DAFSampleData." + Me._ClassName + "()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("With o" + Me._ClassName)

            Me._FormClass.AppendLine()

            Me._FormClass.Append(Me.SetObjectParameters)

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("Dim updateMSG As String = .Update")

            Me._FormClass.AppendLine()

            Me._FormClass.Append("MessageBox.Show(updateMSG)")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End With")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End Using")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Catch ex As Exception")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("MessageBox.Show(ex.Message)")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Finally")

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("Me.Cursor = Cursors.Default()")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append(ControlChars.Tab)

            Me._FormClass.Append("End Try")

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Sub")

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._FormClass.AppendLine()

            Me._FormClass.AppendLine()

            Me._FormClass.Append("End Class")

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            If Me._FormClass.Length > 0 Then

                File.WriteAllText(path, Me._FormClass.ToString())

                Me._FormClass.Remove(0, Me._FormClass.Length)

                MessageBox.Show("Form Class, generated successfully!", "Code Generator!", MessageBoxButtons.OK, MessageBoxIcon.Information)

            End If

 

        Catch IOex As IOException

            MessageBox.Show(IOex.Message, "Code Generator!", MessageBoxButtons.OK, MessageBoxIcon.Information)

 

        Catch ex As Exception

            MessageBox.Show(ex.Message, "Code Generator!", MessageBoxButtons.OK, MessageBoxIcon.Information)

 

        End Try

 

    End Sub

GenerateFormPartialClass
This method generates the form’s partial class

Private Sub GenerateFormPartialClass()

 

        Try

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._FieldsList = FieldsList()

            Dim outputDirectory As String = Me.txtOutputDirectory.Text

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            If String.IsNullOrEmpty(outputDirectory) Then Throw New ArgumentException("Enter out put directory!")

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            If Not Directory.Exists(outputDirectory) Then Directory.CreateDirectory(outputDirectory)

            Dim path As String = outputDirectory + "\frm" + Me._ClassName + ".Designer.vb"

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Partial Class frm" + _ClassName + " : Inherits System.Windows.Forms.Form")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'Form overrides dispose to clean up the component list.")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("<System.Diagnostics.DebuggerNonUserCode()> _")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Protected Overrides Sub Dispose(ByVal disposing As Boolean)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append(ControlChars.Tab)

            Me._FormPartialClass.Append("If disposing AndAlso components IsNot Nothing Then")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append(ControlChars.Tab)

            Me._FormPartialClass.Append(ControlChars.Tab)

            Me._FormPartialClass.Append("components.Dispose()")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append(ControlChars.Tab)

            Me._FormPartialClass.Append("End If")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append(ControlChars.Tab)

            Me._FormPartialClass.Append("MyBase.Dispose(disposing)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("End Sub")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'Required by the Windows Form Designer")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Private components As System.ComponentModel.IContainer")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'NOTE: The following procedure is required by the Windows Form Designer")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'It can be modified using the Windows Form Designer.")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'Do not modify it using the code editor.")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("<System.Diagnostics.DebuggerStepThrough()> _")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Private Sub InitializeComponent()")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnLoad = New System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete = New System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave = New System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate = New System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose = New System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            ' define other controls

            Me._FormPartialClass.Append(Me.InitializeControls())

            Me._FormPartialClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._FormPartialClass.Append("Me.SuspendLayout()")

            Me._FormPartialClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            ' set other controls properties

            Me._FormPartialClass.Append(Me.SetControlProperties())

            Me._FormPartialClass.AppendLine()

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._ControlY = Me._ControlY + 30

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'btnSave")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave.FlatAppearance.BorderColor = System.Drawing.Color.DarkBlue")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave.Location = New System.Drawing.Point(17, " + Me._ControlY.ToString() + ")")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave.Name = ""btnSave""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave.Size = New System.Drawing.Size(77, 23)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave.Tag = """ + _ClassName + """")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave.Text = ""&Save""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnSave.UseVisualStyleBackColor = False")

            Me._FormPartialClass.AppendLine()

 

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'btnDelete")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete.FlatAppearance.BorderColor = System.Drawing.Color.DarkBlue")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete.FlatStyle = System.Windows.Forms.FlatStyle.Flat")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete.Location = New System.Drawing.Point(316, " + Me._ControlY.ToString() + ")")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete.Name = ""btnDelete""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete.Size = New System.Drawing.Size(72, 24)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete.Tag = """ + _ClassName + """")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete.Text = ""&Delete""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnDelete.UseVisualStyleBackColor = False")

            Me._FormPartialClass.AppendLine()

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._ControlY = Me._ControlY + 27

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'btnLoad")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnLoad.FlatAppearance.BorderColor = System.Drawing.Color.DarkBlue")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnLoad.FlatStyle = System.Windows.Forms.FlatStyle.Flat")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnLoad.Location = New System.Drawing.Point(17, " + Me._ControlY.ToString() + ")")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnLoad.Name = ""btnLoad""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnLoad.Size = New System.Drawing.Size(77, 23)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnLoad.Text = ""&Load""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnLoad.UseVisualStyleBackColor = True")

            Me._FormPartialClass.AppendLine()

 

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'btnUpdate")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate.FlatAppearance.BorderColor = System.Drawing.Color.DarkBlue")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate.Location = New System.Drawing.Point(170, " + Me._ControlY.ToString() + ")")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate.Name = ""btnUpdate""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate.Size = New System.Drawing.Size(77, 23)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate.Tag = """ + _ClassName + """")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate.Text = ""&Update""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnUpdate.UseVisualStyleBackColor = False")

            Me._FormPartialClass.AppendLine()

 

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'btnClose")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose.FlatAppearance.BorderColor = System.Drawing.Color.DarkBlue")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose.FlatStyle = System.Windows.Forms.FlatStyle.Flat")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose.Location = New System.Drawing.Point(316, " + Me._ControlY.ToString() + ")")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose.Name = ""btnClose""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose.Size = New System.Drawing.Size(72, 24)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose.Text = ""&Close""")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.btnClose.UseVisualStyleBackColor = False")

            Me._FormPartialClass.AppendLine()

 

            ' Set Form

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._ControlY = Me._ControlY + 50

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'frm" + _ClassName + "")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("'")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.CancelButton = Me.btnClose")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.ClientSize = New System.Drawing.Size(415,  " + Me._ControlY.ToString() + ")")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.Controls.Add(Me.btnLoad)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.Controls.Add(Me.btnDelete)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.Controls.Add(Me.btnSave)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.Controls.Add(Me.btnUpdate)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.Controls.Add(Me.btnClose)")

            Me._FormPartialClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            ' Add form controls

            Me._FormPartialClass.Append(Me.AddFormControls())

            Me._FormPartialClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me._FormPartialClass.Append("Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.KeyPreview = True")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.MaximizeBox = False")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.Name = ""frm" + _ClassName + """")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.Text = """ + _ClassName + """")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.ResumeLayout(False)")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Me.PerformLayout()")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("End Sub")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.AppendLine()

 

            Me._FormPartialClass.Append("Friend WithEvents btnLoad As System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Friend WithEvents btnDelete As System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Friend WithEvents btnSave As System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Friend WithEvents btnUpdate As System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("Friend WithEvents btnClose As System.Windows.Forms.Button")

            Me._FormPartialClass.AppendLine()

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            ' Declare other controls

            Me._FormPartialClass.Append(Me.DeclareControls())

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.AppendLine()

            Me._FormPartialClass.Append("End Class")

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            If Me._FormPartialClass.Length > 0 Then

                File.WriteAllText(path, Me._FormPartialClass.ToString())

                Me._FormPartialClass.Remove(0, Me._FormPartialClass.Length)

                MessageBox.Show("Form Partial Class, generated successfully!", "Code Generator!", MessageBoxButtons.OK, MessageBoxIcon.Information)

            End If

 

        Catch IOex As IOException

            MessageBox.Show(IOex.Message, "Code Generator!", MessageBoxButtons.OK, MessageBoxIcon.Information)

 

        Catch ex As Exception

            MessageBox.Show(ex.Message, "Code Generator!", MessageBoxButtons.OK, MessageBoxIcon.Information)

 

        End Try

 

    End Sub

SaveXML
This method saves the set object properties as an XML file

Private Sub SaveXML(ByVal fileName As String, ByVal data As List(Of Fields))

 

        Dim encoding As New UnicodeEncoding()

        Dim XMLWriter As New XmlTextWriter(fileName, encoding)

 

        Try

 

            With XMLWriter

                .Formatting = Formatting.Indented

                .Indentation = 3

                .WriteStartDocument()

                .WriteStartElement(Me._ClassName)

            End With

 

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            For Each oFields As Fields In data

                With XMLWriter

                    .WriteStartElement("Field")

                    .WriteAttributeString("Name", oFields.Name)

                    .WriteAttributeString("Caption", oFields.Caption)

                    .WriteAttributeString("DataType", oFields.DataType)

                    .WriteAttributeString("Key", oFields.Key)

                    .WriteAttributeString("References", oFields.References)

                    .WriteEndElement()

                End With

            Next

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            XMLWriter.WriteEndElement()

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

        Catch XMLex As XmlException

            Throw XMLex

 

        Catch ex As Exception

            Throw ex

 

        Finally

            XMLWriter.Close()

 

        End Try

 

    End Sub


OpenXML
This method opens the saved XML file object properties

Private Sub OpenXML(ByVal fileName As String)

 

        Try

 

            Dim xmlDatadoc As New XmlDataDocument()

            Dim fields = New DataTable(Me._ClassName)

 

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me.txtClassName.Clear()

            Me.dgvFields.Rows.Clear()

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

            xmlDatadoc.DataSet.ReadXml(fileName)

            fields = xmlDatadoc.DataSet.Tables("Field")

 

            If fields Is Nothing OrElse fields.Rows.Count < 1 Then Return

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Me.txtClassName.Text = xmlDatadoc.FirstChild.Name

 

            For pos As Integer = 0 To fields.Rows.Count - 1

 

                ' Ensure that you add a new row

                Me.dgvFields.Rows.Add()

 

                Me.dgvFields.Item(Me.colName.Name, pos).Value = fields.Rows(pos).Item("Name")

                Me.dgvFields.Item(Me.colCaption.Name, pos).Value = fields.Rows(pos).Item("Caption")

                Me.dgvFields.Item(Me.colDataType.Name, pos).Value = fields.Rows(pos).Item("DataType")

                Me.dgvFields.Item(Me.colKey.Name, pos).Value = fields.Rows(pos).Item("Key")

                Me.dgvFields.Item(Me.colReferences.Name, pos).Value = fields.Rows(pos).Item("References")

 

            Next

 

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

 

        Catch XMLex As XmlException

            Throw XMLex

 

        Catch ex As Exception

            Throw ex

 

        End Try

 

    End Sub

Find full source code in the attached file (Generate_VB_Automatically.zip)

Wilson Kutegeka | Microsoft MVP - VB | C#
Developer | Promoter | ClinicMaster Software

Cel: +256 772 609113 | Web:
www.clinicmaster.net

follow me on twitter find me on facebook