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.
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
This contains the Customers class, which defines methods such as SaveData, UpdateData, DeleteData, GetCustomers etc.
This is the partial class for the form frmCustomers
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