.NET Development

When coding a .NET transactional form, we end up putting the same piece of code in those forms over and over - the form state code.

Every form is different, but generally we use three form states = CLEAN, POPULATED, and DIRTY. We'll use an 'Item' form for discussions sake

  1. Clean is for when the form is newly opened. Generally every field on the form is disabled except the main lookup field and maybe a lookup button.
  2. Populated is when the user has selected an item, but has not edited anything. Generally the item number field would be disabled, but the lookup button would not be, and all the form fields would be enabled
  3. Dirty is when the form has been edited an it needs to be saved. Both the item number field and the item lookup button are disabled, all remaining fields are enabled.

We also have code to clear every field on the form.

Last, we have code to add event handlers to each field, so that when the field is edited the form will become DIRTY.

 

 

 

#Region "Formstate"
    Dim aManualObjects As String() = {"lblStatus", "txtSOPNumber", "btnSave", "btnClear"}
 
 
    Dim _bPopulating As Boolean
    Enum FormStateType
        Clean = 0
        Populated = 1
        Dirty = 2
    End Enum
 
    Private _FormState As FormStateType
    Public Property Formstate() As FormStateType
        Get
            Return _FormState
        End Get
        Set(ByVal value As FormStateType)
            _FormState = value
            _bPopulating = True
            Select Case value
                Case FormStateType.Clean
                    Me.lblStatus.Text = "Clean"
                    EnableFields(False)
                    Me.btnSave.Enabled = False
                    Clear()
                    SetDefaults()
                Case FormStateType.Populated
                    Me.lblStatus.Text = "Populated"
                    EnableFields(True)
                    Me.btnSave.Enabled = False
                Case FormStateType.Dirty
                    Me.lblStatus.Text = "Dirty"
                    EnableFields(True)
                    Me.btnSave.Enabled = True
            End Select
            _bPopulating = False
        End Set
    End Property
    Public Function FindStringIndex(ByVal word As String, ByVal ArrayToSearch() As String) As Integer
 
        Dim WordIndex As Integer = Array.IndexOf(ArrayToSearch, word)
 
        Return WordIndex
 
    End Function
    Sub EnableFields(ByVal bEnabled As Boolean)
        For Each o As Control In Me.Controls
            If Array.IndexOf(aManualObjects, o.Name) = -1 Then
                EnableFields(bEnabled, o)
            End If
        Next
 
    End Sub
    Sub EnableFields(ByVal bEnabled As Boolean, ByVal o As Object)
 
        If TypeOf (o) Is Telerik.WinControls.UI.RadTextBox Then
            Dim txt As RadTextBox = CType(o, RadTextBox)
            txt.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadTextBoxControl Then
            Dim txt As RadTextBoxControl = CType(o, RadTextBoxControl)
            txt.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadDropDownList Then
            Dim ddl As RadDropDownList = CType(o, RadDropDownList)
            ddl.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadMultiColumnComboBox Then
            Dim ddl As RadMultiColumnComboBox = CType(o, RadMultiColumnComboBox)
            ddl.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadDateTimePicker Then
            Dim ddl As RadDateTimePicker = CType(o, RadDateTimePicker)
            ddl.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadMaskedEditBox Then
            Dim ddl As RadMaskedEditBox = CType(o, RadMaskedEditBox)
            ddl.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadRadioButton Then
            Dim rdo As RadRadioButton = CType(o, RadRadioButton)
            rdo.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadSpinEditor Then
            Dim txt As RadSpinEditor = CType(o, RadSpinEditor)
            txt.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadCheckBox Then
            Dim chk As RadCheckBox = CType(o, RadCheckBox)
            chk.Enabled = bEnabled
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadCheckBox Then
            Dim chk As RadCheckBox = CType(o, RadCheckBox)
            chk.Enabled = bEnabled
        End If
 
    End Sub
    Sub Clear()
        For Each o As Control In Me.Controls
            Clear(o)
        Next
 
    End Sub
 
    Sub Clear(ByVal o As Object)
        If TypeOf (o) Is Telerik.WinControls.UI.RadLabel Then
 
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadTextBox Then
            Dim txt As RadTextBox = CType(o, RadTextBox)
            txt.Text = ""
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadTextBoxControl Then
            Dim txt As RadTextBoxControl = CType(o, RadTextBoxControl)
            txt.Text = ""
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadDropDownList Then
            Dim ddl As RadDropDownList = CType(o, RadDropDownList)
            ddl.SelectedIndex = 0
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadMultiColumnComboBox Then
            Dim ddl As RadMultiColumnComboBox = CType(o, RadMultiColumnComboBox)
            ddl.SelectedIndex = -1
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadDateTimePicker Then
            Dim ddl As RadDateTimePicker = CType(o, RadDateTimePicker)
            ddl.Value = Now.ToShortDateString
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadMaskedEditBox Then
            Dim ddl As RadMaskedEditBox = CType(o, RadMaskedEditBox)
            ddl.Text = ""
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadCheckBox Then
            Dim chk As RadCheckBox = CType(o, RadCheckBox)
            chk.Checked = False
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadSpinEditor Then
            Dim txt As RadSpinEditor = CType(o, RadSpinEditor)
            txt.Value = 0
            Exit Sub
        End If
 
    End Sub
 
    Sub SetupEventHandlers()
        Try
 
            For Each o As Control In Me.Controls
                If Array.IndexOf(aManualObjects, o.Name) = -1 Then
                    SetupEventHandlers(o)
                End If
 
            Next
 
        Catch ex As Exception
            FPCommon.ErrorHandler.globalErrorHandler(ex, True)
        End Try
    End Sub
    Sub SetupEventHandlers(ByVal o As Object)
 
        If TypeOf (o) Is Telerik.WinControls.UI.RadTextBox Then
            Dim txt As RadTextBox = CType(o, RadTextBox)
            AddHandler txt.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadTextBoxControl Then
            Dim txt As RadTextBoxControl = CType(o, RadTextBoxControl)
            AddHandler txt.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadDropDownList Then
            Dim ddl As RadDropDownList = CType(o, RadDropDownList)
            AddHandler ddl.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadMultiColumnComboBox Then
            Dim ddl As RadMultiColumnComboBox = CType(o, RadMultiColumnComboBox)
            AddHandler ddl.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadDateTimePicker Then
            Dim ddl As RadDateTimePicker = CType(o, RadDateTimePicker)
            AddHandler ddl.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadMaskedEditBox Then
            Dim ddl As RadMaskedEditBox = CType(o, RadMaskedEditBox)
            AddHandler ddl.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadRadioButton Then
            Dim rdo As RadRadioButton = CType(o, RadRadioButton)
            AddHandler rdo.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadSpinEditor Then
            Dim txt As RadSpinEditor = CType(o, RadSpinEditor)
            AddHandler txt.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
        If TypeOf (o) Is Telerik.WinControls.UI.RadCheckBox Then
            Dim chk As RadCheckBox = CType(o, RadCheckBox)
            AddHandler chk.Validated, AddressOf Me.FieldValidated
            Exit Sub
        End If
 
    End Sub
    Sub SetDefaults()
 
    End Sub
    Sub FieldValidated(ByVal sender As Object, ByVal e As EventArgs)
 
    End Sub

RealWorldCode gives developers practical, real‑world solutions with clean, working code — no fluff, no theory, just answers.
Links
Home
Knowledge Areas
Sitemap
Contact
Et cetera
Privacy Policy
Terms and Conditions
Cookie Preferences