Visual Basic .NET Tutorial
Here is the code. I will explain later.
'Import dlls
Imports Microsoft.VisualBasic
Imports System
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Reflection
'wrap your code in a namespace so functions aren't confused
Namespace FreeVB
'create a startup form
Public Class frmMain
Inherits Form
'declare controls used on form
Private WithEvents rtbCode As New RichTextBox
Private rtbResults As New RichTextBox
Private mnuMain as New MainMenu()
Private mnuFile as New MenuItem()
Private WithEvents mnuFileNew as New MenuItem()
Private WithEvents mnuFileOpen as New MenuItem()
Private WithEvents mnuFileSave as New MenuItem()
Private WithEvents mnuFileSaveAs as New MenuItem()
Private WithEvents mnuFilePrint as New MenuItem()
Private mnuFileHyph1 as New MenuItem()
Private WithEvents mnuFileExit as New MenuItem()
Private mnuEdit as New MenuItem()
Private WithEvents mnuEditSelectAll as New MenuItem()
Private WithEvents mnuEditFind as New MenuItem()
Private WithEvents mnuColorCode as New MenuItem()
Private mnuCompilation as New MenuItem()
Private WithEvents mnuCompile as New MenuItem()
Private WithEvents mnuCompileAndRun as New MenuItem()
Private WithEvents mnuCompileCancel as New MenuItem()
Private mnuOptions as New MenuItem()
Private WithEvents mnuOptDebug as New MenuItem()
Private WithEvents mnuOptRelease as New MenuItem()
Private WithEvents mnuOptHyph1 as New MenuItem()
Private WithEvents mnuOptConsole as New MenuItem()
Private WithEvents mnuOptWinExe as New MenuItem()
Private WithEvents mnuOptWinDll as New MenuItem()
Private mnuHelp as New MenuItem()
Private WithEvents mnuHelpAssy as New MenuItem()
Private WithEvents mnuHelpClass as New MenuItem()
'declare variables and constants
Private sFileName as String
Private sPath as String
Private mbCompiling as Boolean
Private Const MAXKEYWORD = 59
Private aKey(MAXKEYWORD) As String
Private Const TMPLOCFILE = "\tmpvbnet.loc"
Private Const TMPERRFILE = "\tmpvbnet.err"
Private Const TMPVBFILE = "\tmpvbnet.vb"
Private Const TMPBATFILE = "\tmpvbnet.bat"
Private Const NOERROR = "All rights reserved." & vbLf & vbLf
'Form Launch Point
Shared Sub Main()
System.Windows.Forms.Application.Run(New frmMain())
End Sub
Public Sub New()
MyBase.New
'Form Properties
Me.Height=600
Me.Width=800
Me.Left=0
Me.Top=0
Me.Text="FreeVB"
'Control Properties
rtbCode.Height=Me.Height - 140
rtbCode.Width=Me.Width-10
rtbCode.Left=0
rtbCode.Top=0
rtbCode.Multiline=true
rtbCode.ScrollBars=ScrollBars.Both
rtbCode.Text = "code here"
rtbCode.AcceptsTab = True
rtbResults.Height=100
rtbResults.Width=Me.Width-10
rtbResults.Left=0
rtbResults.Top=rtbCode.Height
rtbResults.Multiline=true
rtbResults.ScrollBars=ScrollBars.Both
rtbResults.Text="compiler ouput"
mnuFile.Text="&File"
mnuFileNew.Text="&New"
mnuFileOpen.Text="&Open"
mnuFileSave.Text="&Save"
mnuFileSaveAs.Text="Save &As..."
mnuFilePrint.Text="&Print"
mnuFileHyph1.Text="-"
mnuFileExit.Text="E&xit"
mnuEdit.Text="&Edit"
mnuEditSelectAll.Text="Select &All"
mnuEditFind.Text="&Find"
mnuColorCode.Text="&Color Code"
mnuCompilation.Text="&Compilation"
mnuCompile.Text="&Compile"
mnuCompileAndRun.Text="Compile and &Run"
mnuCompileCancel.Text="C&ancel"
mnuOptions.Text="&Options"
mnuOptDebug.Text="&Debug"
mnuOptRelease.Text="&Release"
mnuOptHyph1.Text="-"
mnuOptConsole.Text="&Console"
mnuOptWinExe.Text="Win &Exe"
mnuOptWinDll.Text="Win &Dll"
mnuHelp.Text="&Help"
mnuHelpAssy.Text="&Assembly Help"
mnuHelpClass.Text="&Class Help"
'Create you menu hierarchy
mnuMain.MenuItems.Add(mnuFile)
mnuFile.MenuItems.Add(mnuFileNew)
mnuFile.MenuItems.Add(mnuFileOpen)
mnuFile.MenuItems.Add(mnuFileSave)
mnuFile.MenuItems.Add(mnuFileSaveAs)
mnuFile.MenuItems.Add(mnuFilePrint)
mnuFile.MenuItems.Add(mnuFileHyph1)
mnuFile.MenuItems.Add(mnuFileExit)
mnuMain.MenuItems.Add(mnuEdit)
mnuEdit.MenuItems.Add(mnuEditSelectAll)
mnuEdit.MenuItems.Add(mnuEditFind)
mnuEdit.MenuItems.Add(mnuColorCode)
mnuMain.MenuItems.Add(mnuCompilation)
mnuCompilation.MenuItems.Add(mnuCompile)
mnuCompilation.MenuItems.Add(mnuCompileAndRun)
mnuCompilation.MenuItems.Add(mnuCompileCancel)
mnuMain.MenuItems.Add(mnuOptions)
mnuOptions.MenuItems.Add(mnuOptDebug)
mnuOptions.MenuItems.Add(mnuOptRelease)
mnuOptions.MenuItems.Add(mnuOptHyph1)
mnuOptions.MenuItems.Add(mnuOptConsole)
mnuOptions.MenuItems.Add(mnuOptWinExe)
mnuOptions.MenuItems.Add(mnuOptWinDll)
mnuMain.MenuItems.Add(mnuHelp)
mnuHelp.MenuItems.Add(mnuHelpAssy)
mnuHelp.MenuItems.Add(mnuHelpClass)
'add controls to the form
Me.Controls.Add(rtbCode)
Me.Controls.Add(rtbResults)
Me.Menu = mnuMain
'form setup code
sFileName="untitled.vb"
sPath=System.Windows.Forms.Application.StartupPath
Me.Text="FreeVBIDE: " & sFileName
rtbCode.Text=""
mnuOptDebug.Checked=True
mnuOptWinExe.Checked=True
FillKeyWords
End Sub
'create a list of keywords for color coding
Public Sub FillKeyWords()
aKey(0) = "Imports"
aKey(1) = "Namespace"
aKey(2) = "Public"
aKey(3) = "Private"
aKey(4) = "Class"
aKey(5) = "Inherits"
aKey(6) = "As"
aKey(7) = "New"
aKey(8) = "Shared"
aKey(9) = "End"
aKey(10) = "Sub"
aKey(11) = "Function"
aKey(12) = "Me"
aKey(13) = "Protected"
aKey(14) = "Overloads"
aKey(15) = "Overrides"
aKey(16) = "Try"
aKey(17) = "Catch"
aKey(18) = "MyBase"
aKey(19) = "True"
aKey(20) = "False"
aKey(21) = "Dim"
aKey(22) = "Finally"
aKey(23) = "If"
aKey(24) = "Then"
aKey(25) = "Do"
aKey(26) = "While"
aKey(27) = "Not"
aKey(28) = "Loop"
aKey(29) = "Until"
aKey(30) = "Select"
aKey(31) = "Case"
aKey(32) = "Nothing"
aKey(33) = "Is"
aKey(34) = "Or"
aKey(35) = "Else"
aKey(36) = "ElseIf"
aKey(37) = "Char"
aKey(38) = "Byte"
aKey(39) = "Integer"
aKey(40) = "Short"
aKey(41) = "Long"
aKey(42) = "Single"
aKey(43) = "Double"
aKey(44) = "Decimal"
aKey(45) = "Boolean"
aKey(46) = "Date"
aKey(47) = "String"
aKey(48) = "Static"
aKey(49) = "Const"
aKey(50) = "Return"
aKey(51) = "With"
aKey(52) = "For"
aKey(53) = "Next"
aKey(54) = "Each"
aKey(55) = "Stop"
aKey(56) = "Property"
aKey(57) = "Exit"
aKey(58) = "Goto"
aKey(59) = "And"
End Sub
'From Events
Private Sub frmMain_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
Dim myFrm As Control
myFrm = sender
If (myFrm.Height > 250) And (myFrm.Width > 250) Then
rtbCode.Width = myFrm.Width-10
rtbCode.Height = myFrm.Height-140
rtbResults.Top = rtbCode.Height
rtbResults.Width = myFrm.Width-10
End If
End Sub
'Control Events and functions to support them
Private Sub rtbCode_SelectionChanged(sender As Object, evArgs As EventArgs) Handles rtbCode.SelectionChanged
If rtbCode.Enabled Then Me.Text="FreeVB: " & sFileName & " (" & rtbCode.GetLineFromCharIndex(rtbCode.SelectionStart) & ")"
End Sub
Private Sub ColorCode(ByVal s as long, ByVal e as long)
Dim p As integer, i As Integer, p2 As integer
rtbCode.Enabled = false
rtbCode.SelectionStart = s
rtbCode.SelectionLength = e-s
rtbCode.SelectionColor = Color.Black
For i = 0 To MAXKEYWORD
p = s
Do While (p >= s) And (p<=e)
p = rtbCode.Find(aKey(i),p,e,2)
If (p >= s) And (p<=e) Then
rtbCode.SelectionColor = Color.Blue
p = p + rtbCode.SelectionLength
End If
Loop
Next i
p = s
Do While (p >= s) And (p<=e)
p = rtbCode.Find("'", p,e,0)
If (p >= s) And (p<=e) Then
p2 = InStr(p+1,rtbCode.Text,vbLf,1)
If (p2 >= p+1) And (p2<=e) Then
rtbCode.SelectionStart = p
rtbCode.SelectionLength = p2 - p
rtbCode.SelectionColor = Color.Green
p=p2
End If
p = p + 1
End If
Loop
p = s
Do While (p >= s) And (p<=e)
p = rtbCode.Find("""", p,e,0)
If (p >= s) And (p<=e) Then
p2 = rtbCode.Find("""", p + 1,e,0)
If (p2 >= p+1) And (p2<=e) Then
rtbCode.SelectionStart = p
rtbCode.SelectionLength = p2 - p + 1
rtbCode.SelectionColor = Color.Red
p=p2
End If
p = p + 1
End If
Loop
rtbCode.Enabled = true
End Sub
Private Function ColorCodeOldLine() As Integer
Dim p As integer, s As integer, e As integer, l as integer, iRet As Integer
iRet=0
e = rtbCode.SelectionStart
l = rtbCode.SelectionLength
s = InStrRev(rtbCode.Text, vbLf, e - 1, 1)
p = s
Do While (p > 0) And (p < e)
p = InStr(p, rtbCode.Text, vbTab)
If (p > 0) And (p < e) Then
iRet = iRet + 1
p = p + 1
End If
Loop
ColorCode(s,e)
rtbCode.SelectionStart = e
rtbCode.SelectionLength = l
ColorCodeOldLine = iRet
End Function
Private Sub rtbCode_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles rtbCode.KeyUp
Dim i As Integer, iTabs As Integer, sTabs As String
sTabs = ""
If e.KeyCode = Keys.Return Then
iTabs = ColorCodeOldLine()
For i = 1 To iTabs
sTabs = sTabs & vbTab
Next i
rtbCode.SelectedText = sTabs
End If
End Sub
Private Sub mnuFileNew_Click(sender As Object, evArgs As EventArgs) Handles mnuFileNew.Click
sFileName="untitled.vb"
Me.Text="FreeVB: " & sFileName
rtbCode.Text=""
End Sub
Private Sub mnuFileOpen_Click(sender As Object, evArgs As EventArgs) Handles mnuFileOpen.Click
Dim openFile1 As New OpenFileDialog()
openFile1.DefaultExt = "*.vb"
openFile1.Filter = "VB.Net Files|*.vb"
If (openFile1.ShowDialog() = System.Windows.Forms.DialogResult.OK) And (openFile1.FileName.Length > 0) Then
rtbCode.LoadFile(openFile1.FileName, RichTextBoxStreamType.PlainText)
sFileName = openFile1.FileName
Me.Text="FreeVB: " & sFileName
rtbCode.Visible = False
ColorCode(0,rtbCode.Text.Length)
rtbCode.Visible = True
End If
End Sub
Private Sub mnuFileSave_Click(sender As Object, evArgs As EventArgs) Handles mnuFileSave.Click
rtbCode.SaveFile(sFileName, RichTextBoxStreamType.PlainText)
End Sub
Private Sub mnuFileSaveAs_Click(sender As Object, evArgs As EventArgs) Handles mnuFileSaveAs.Click
Dim saveFile1 As New SaveFileDialog()
saveFile1.DefaultExt = "*.vb"
saveFile1.Filter = "VB.NET Files|*.vb"
If (saveFile1.ShowDialog() = System.Windows.Forms.DialogResult.OK) And (saveFile1.FileName.Length) > 0 Then
rtbCode.SaveFile(saveFile1.FileName, RichTextBoxStreamType.PlainText)
sFileName = saveFile1.FileName
Me.Text="FreeVB: " & sFileName
End If
End Sub
Private Sub mnuFilePrint_Click(sender As Object, evArgs As EventArgs) Handles mnuFilePrint.Click
rtbResults.Text="print!"
End Sub
Private Sub mnuFileExit_Click(sender As Object, evArgs As EventArgs) Handles mnuFileExit.Click
Me.Dispose()
End Sub
Private Sub mnuEditSelectAll_Click(sender As Object, evArgs As EventArgs) Handles mnuEditSelectAll.Click
rtbCode.SelectionStart=1
rtbCode.SelectionLength=rtbCode.Text.Length
End Sub
Private Function FindText(ByVal searchText As String, ByVal searchStart As Integer, ByVal searchEnd As Integer) As Integer
Dim returnValue As Integer = -1
If searchText.Length > 0 And searchStart >= 0 Then
If searchEnd > searchStart Or searchEnd = -1 Then
Dim indexToText As Integer = rtbCode.Find(searchText, searchStart, searchEnd, 0)
If indexToText >= 0 Then returnValue = indexToText
End If
End If
Return returnValue
End Function
Private Sub mnuEditFind_Click(sender As Object, evArgs As EventArgs) Handles mnuEditFind.Click
Dim iFound = FindText(InputBox("Search For:"),1,rtbCode.Text.Length)
'If iFound then rtbCode.SelectionStart=iFound
End Sub
Private Sub mnuColorCode_Click(sender As Object, evArgs As EventArgs) Handles mnuColorCode.Click
ColorCode(rtbCode.SelectionStart,rtbCode.SelectionStart+rtbCode.SelectionLength)
End Sub
Private Function Compile() as Boolean
Dim bRet As Boolean, p as integer, p2 as integer, sDll as String
mbCompiling = True
If Len(Dir(sPath & TMPLOCFILE)) > 0 Then
Kill(sPath & TMPLOCFILE)
End If
rtbCode.SaveFile(sPath & TMPVBFILE, RichTextBoxStreamType.PlainText)
rtbResults.Text = "vbc.exe /t:"
If mnuOptConsole.Checked Then
rtbResults.Text = rtbResults.Text & "exe /debug"
Else If mnuOptWinExe.Checked then
rtbResults.Text = rtbResults.Text & "winexe /debug"
Else
rtbResults.Text = rtbResults.Text & "windll /debug"
End If
If mnuOptDebug.Checked then
rtbResults.Text = rtbResults.Text & "+ /out:"
Else
rtbResults.Text = rtbResults.Text & "- /out:"
End If
If mnuOptWinDll.Checked Then
rtbResults.Text = rtbResults.Text & sFileName & ".dll"
Else
rtbResults.Text = rtbResults.Text & sFileName & ".exe"
End If
p=1
Do While (p>0)
p=instr(p,rtbCode.Text,"Imports ",0)
If (p>0) And (p<100) Then
p=p+8
p2=InStr(p,rtbCode.Text,vbLf)
If p2>0 Then
sDll = Mid(rtbCode.Text,p,p2-p) & ".dll"
if sDll <> "System.Reflection" Then rtbResults.Text = rtbResults.Text & " /r:" & sDll
End If
End If
Loop
rtbResults.Text = rtbResults.Text & " " & sPath & TMPVBFILE & " >" & sPath & TMPERRFILE
rtbResults.Text = rtbResults.Text & vbCrLf & "echo done >" & sPath & TMPLOCFILE
rtbResults.SaveFile(sPath & TMPBATFILE, RichTextBoxStreamType.PlainText)
Shell(sPath & TMPBATFILE)
Do While mbCompiling
If Len(Dir(sPath & TMPLOCFILE)) > 0 Then mbCompiling = False
System.Windows.Forms.Application.DoEvents
Loop
If Len(Dir(sPath & TMPERRFILE)) > 0 Then rtbResults.LoadFile(sPath & TMPERRFILE, RichTextBoxStreamType.PlainText)
If rtbResults.Text.Substring(rtbResults.Text.Length-NOERROR.Length,NOERROR.Length)=NOERROR Then
bRet = True
rtbResults.Text = rtbResults.Text & "Compilation successful!"
End If
Compile = bRet
End Function
Private Sub mnuCompile_Click(sender As Object, evArgs As EventArgs) Handles mnuCompile.Click
Compile
End Sub
Private Sub mnuCompileAndRun_Click(sender As Object, evArgs As EventArgs) Handles mnuCompileAndRun.Click
If Compile() And Not mnuOptWinDll.Checked Then Shell(sPath & sFileName & ".exe")
End Sub
Private Sub mnuCompileCancel_Click(sender As Object, evArgs As EventArgs) Handles mnuCompileCancel.Click
mbCompiling = false
End Sub
Private Sub mnuOptDebug_Click(sender As Object, evArgs As EventArgs) Handles mnuOptDebug.Click
mnuOptDebug.Checked = Not mnuOptDebug.Checked
mnuOptRelease.Checked = Not mnuOptRelease.Checked
End Sub
Private Sub mnuOptRelease_Click(sender As Object, evArgs As EventArgs) Handles mnuOptRelease.Click
mnuOptDebug.Checked = Not mnuOptDebug.Checked
mnuOptRelease.Checked = Not mnuOptRelease.Checked
End Sub
Private Sub mnuOptConsole_Click(sender As Object, evArgs As EventArgs) Handles mnuOptConsole.Click
mnuOptConsole.Checked = Not mnuOptConsole.Checked
mnuOptWinExe.Checked = Not mnuOptConsole.Checked
mnuOptWinDll.Checked = Not mnuOptConsole.Checked
End Sub
Private Sub mnuOptWinExe_Click(sender As Object, evArgs As EventArgs) Handles mnuOptWinExe.Click
mnuOptWinExe.Checked = Not mnuOptWinExe.Checked
mnuOptConsole.Checked = Not mnuOptWinExe.Checked
mnuOptWinDll.Checked = Not mnuOptWinExe.Checked
End Sub
Private Sub mnuOptWinDll_Click(sender As Object, evArgs As EventArgs) Handles mnuOptWinDll.Click
mnuOptWinDll.Checked = Not mnuOptWinDll.Checked
mnuOptWinExe.Checked = Not mnuOptWinDll.Checked
mnuOptConsole.Checked = Not mnuOptWinDll.Checked
End Sub
Private Sub DisplayAssemblyInfo(ByVal sAssy as String)
Try
Dim a As [Assembly] = [Assembly].LoadFrom(sAssy & ".dll")
Dim m As [Module]() = a.GetModules()
Dim j As Integer
For j = 0 To m.Length - 1
If Not (m Is Nothing) Then
Dim types As Type() = m(j).GetTypes()
Dim i As Integer
For i = 0 To types.Length - 1
rtbResults.Text = rtbResults.Text & types(i).FullName & vbcrlf
Next i
End If
Next j
Catch
rtbResults.Text = "Unable to display classes of assembly: " & sAssy & ". Check spelling."
End Try
End Sub
Private Sub mnuHelpAssy_Click(sender As Object, evArgs As EventArgs) Handles mnuHelpAssy.Click
DisplayAssemblyInfo(InputBox("Assembly:"))
End Sub
Private Function GetTypeDescription(ByVal aType As Type) As String
Dim str As String = Nothing
If aType.IsClass Then
str = "class"
End If
If aType.IsInterface Then
str = "interface"
End If
If aType.IsValueType Then
str = "struct"
End If
If aType.IsArray Then
str = "array"
End If
Return str
End Function 'GetTypeDescription
' Dumps information about the specified type.
Private Sub DumpType(ByVal aType As Type)
Dim baseType As Type = aType.BaseType
rtbResults.Text = rtbResults.Text & GetTypeDescription(aType) & " " & aType.ToString() & vbcrlf
rtbResults.Text = rtbResults.Text & "Module:" & aType.Module.FullyQualifiedName & vbcrlf
DumpInterfaces(aType)
DumpFields(aType)
DumpProperties(aType)
DumpEvents(aType)
DumpMethods(aType)
If Not (baseType Is Nothing) Then
DumpType(baseType)
End If
End Sub 'DumpType
' Dumps the interfaces implemented by the specified type.
Private Sub DumpInterfaces(ByVal aType As Type)
Dim info As Type() = aType.GetInterfaces()
If info.Length <> 0 Then
rtbResults.Text = rtbResults.Text & "# Interfaces:" & info.Length & vbcrlf
Dim i As Integer
For i = 0 To info.Length - 1
rtbResults.Text = rtbResults.Text & info(i).FullName & vbcrlf
DumpType(info(i))
Next i
End If
End Sub 'DumpInterfaces
' Dumps the public properties directly contained in the specified type
Private Sub DumpProperties(ByVal aType As Type)
Dim pInfo As PropertyInfo() = aType.GetProperties()
rtbResults.Text = rtbResults.Text & "Properties" & vbcrlf
Dim found As Boolean = False
If pInfo.Length <> 0 Then
Dim curInfo As PropertyInfo = Nothing
Dim i As Integer
For i = 0 To pInfo.Length - 1
curInfo = pInfo(i)
If curInfo.DeclaringType Is aType Then
found = True
Dim flags As String = Nothing
If curInfo.CanRead And curInfo.CanWrite Then
flags = "get; set;"
Else If curInfo.CanRead Then
flags = "get"
Else If curInfo.CanWrite Then
flags = "set"
End If
rtbResults.Text = rtbResults.Text + curInfo.ToString() +" " + flags + vbcrlf
End If
Next i
End If
If Not found Then
rtbResults.Text = rtbResults.Text & " (none)" & vbcrlf
End If
End Sub 'DumpProperties
' Dumps the public events directly contained in the specified type
Private Sub DumpEvents(ByVal aType As Type)
Dim eInfo As EventInfo() = aType.GetEvents()
rtbResults.Text = rtbResults.Text & "Events:" & vbcrlf
Dim found As Boolean = False
If eInfo.Length <> 0 Then
Dim i As Integer
For i = 0 To eInfo.Length - 1
If eInfo(i).DeclaringType Is aType Then
found = True
rtbResults.Text = rtbResults.Text & eInfo(i).ToString() & vbcrlf
End If
Next i
End If
If Not found Then
rtbResults.Text = rtbResults.Text & " (none)" & vbcrlf
End If
End Sub 'DumpEvents
' Dumps the public fields directly contained in the specified type
Private Sub DumpFields(ByVal aType As Type)
Dim info As FieldInfo() = aType.GetFields()
rtbResults.Text = rtbResults.Text & "Fields:" & vbcrlf
Dim found As Boolean = False
If info.Length <> 0 Then
Dim i As Integer
For i = 0 To info.Length - 1
If info(i).DeclaringType Is aType Then
rtbResults.Text = rtbResults.Text + info(i).ToString() + vbcrlf
found = True
End If
Next i
End If
If Not found Then
rtbResults.Text = rtbResults.Text & " (none)" & vbcrlf
End If
End Sub 'DumpFields
' Dumps the public methods directly contained in the specified type.
Private Sub DumpMethods(ByVal aType As Type)
Dim mInfo As MethodInfo() = aType.GetMethods()
rtbResults.Text = rtbResults.Text & "Methods" & vbcrlf
Dim found As Boolean = False
If mInfo.Length <> 0 Then
Dim i As Integer
For i = 0 To mInfo.Length - 1
If mInfo(i).DeclaringType Is aType And Not mInfo(i).IsSpecialName Then
found = True
Dim modifiers As String = ""
If mInfo(i).IsStatic Then
modifiers = "static "
End If
If mInfo(i).IsPublic Then
modifiers = modifiers + "public "
End If
If mInfo(i).IsFamily Then
modifiers = modifiers + "protected "
End If
If mInfo(i).IsAssembly Then
modifiers = modifiers + "internal "
End If
If mInfo(i).IsPrivate Then
modifiers = modifiers + "private "
End If
rtbResults.Text = rtbResults.Text + modifiers + mInfo(i).ToString() + vbcrlf
End If
Next i
End If
If Not found Then
rtbResults.Text = rtbResults.Text & " (none)" & vbcrlf
End If
End Sub 'DumpMethods
Private Sub DisplayClassInfo(ByVal sClass as String)
Try
If InStrRev(sClass,".")>0 Then
Dim sAssy As String = Microsoft.VisualBasic.Left(sClass,InStrRev(sClass,"."))
Dim a As [Assembly] = [Assembly].LoadFrom(sAssy & "dll")
Dim t As [Type] = a.GetType(sClass)
If Not (t Is Nothing) Then DumpType(t)
End If
Catch
rtbResults.Text = "Unable to display properties of class: " & sClass & ". Check spelling."
End Try
End Sub
Private Sub mnuHelpClass_Click(sender As Object, evArgs As EventArgs) Handles mnuHelpClass.Click
DisplayClassInfo(InputBox("Class:"))
End Sub
'Thats it!
End Class
End Namespace