GUI VB.Net Tutorial

Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Windows.Forms
public class DialogApplyMethod
   public Shared Sub Main
        Application.Run(New Form1)
   End Sub
End class
Public Class Form1
    Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
    Public Sub New()
        MyBase.New()
        'This call is required by the Windows Form Designer.
        InitializeComponent()
        'Add any initialization after the InitializeComponent() call
    End Sub
    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub
    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer
    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
  Friend WithEvents btnCreate As System.Windows.Forms.Button
  Friend WithEvents lblReturn As System.Windows.Forms.Label
     Private Sub InitializeComponent()
Me.btnCreate = New System.Windows.Forms.Button()
Me.lblReturn = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'btnCreate
'
Me.btnCreate.Location = New System.Drawing.Point(72, 144)
Me.btnCreate.Name = "btnCreate"
Me.btnCreate.Size = New System.Drawing.Size(152, 23)
Me.btnCreate.TabIndex = 0
Me.btnCreate.Text = "Create Dialog Box"
'
'lblReturn
'
Me.lblReturn.Location = New System.Drawing.Point(88, 72)
Me.lblReturn.Name = "lblReturn"
Me.lblReturn.TabIndex = 1
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lblReturn, Me.btnCreate})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
   End Sub
#End Region
  public sub UpdateLabel(str as String)
    lblReturn.Text = str
  end sub
  Private Sub btnCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreate.Click
    dim dlg as new DialogDemo( me ) 
    dlg.EnableApplyButton = false
    dlg.ShowDialog()
    
    if dlg.DialogResult = DialogResult.OK then
      lblReturn.Text = dlg.TextOut
    else
      lblReturn.Text = dlg.DialogResult.ToString()
    end if
  End Sub
End Class
public class DialogDemo 
      inherits Form
  dim btnApply as Button
  dim txt as TextBox
  dim f as Form1
  
  public sub new (f as Form1)
        myBase.New
    me.f = f
    FormBorderStyle = FormBorderStyle.FixedDialog
    ControlBox = false
    MaximizeBox = false
    MinimizeBox = false
    ShowInTaskbar = false
    Size = new Size(400,200)
    StartPosition = FormStartPosition.CenterScreen
    dim btnOK as New Button
    btnOK.Text = "OK"
    btnOK.DialogResult = DialogResult.OK
    btnOK.Location = new Point(50,50)
    Controls.Add(btnOK)
    
    btnApply = new Button()
    btnApply.Text = "Apply"
    btnApply.Location = new Point(150,50)
    btnApply.Enabled = false
    AddHandler btnApply.Click, AddressOf ApplyOnClick
    Controls.Add(btnApply)
    
    dim btnCancel as new Button()
    btnCancel.Text = "Cancel"
    btnCancel.DialogResult = DialogResult.Cancel
    btnCancel.Location = new Point(250,50)
    Controls.Add(btnCancel)
    txt = new TextBox()
    txt.Size = new Size(100,15)
    txt.Location = new Point(150,15)
    AddHandler txt.TextChanged, AddressOf TextBoxChanged
    Controls.Add(txt)
    
  end sub
  private sub ApplyOnClick(sender as Object, e as EventArgs)
    f.UpdateLabel(txt.Text)
    EnableApplyButton = false
  end sub
  
  private sub TextBoxChanged(sender as Object, e as EventArgs)
    dim txt as TextBox = CType(sender,TextBox)
    dim dlg as DialogDemo = CType(txt.Parent,DialogDemo)
    dlg.EnableApplyButton = true  
  end sub
  public property EnableApplyButton as Boolean
    get 
      return btnApply.Enabled
    end get
    set
      btnApply.Enabled = value 
    end set
  end property
  
  public ReadOnly property TextOut as string
    get
      return txt.Text 
    end get
  end property
end class