Simplify Your Code with Reflection: Listing 1: XML, Determine the Controls to Check
You can use XML to help you determine whether a user has made any changes to the data on one of your forms (if the form is "dirty"). This code checks for the standard TextBox, CheckBox, ComboBox, ListBox, CheckedListBox, and MonthCalendar controls, but you can easily add other custom controls with unique names to this list.
<?xml version="1.0" encoding="utf-8" ?>
<Controls>
<Control>
<Type>System.Windows.Forms.TextBox</Type>
<Property1>Text</Property1>
<Property2></Property2>
<IsMultiList>No</IsMultiList>
<PropertyToCheck></PropertyToCheck>
<PropertyToCheckValue></PropertyToCheckValue>
</Control>
<Control>
<Type>System.Windows.Forms.CheckBox</Type>
<Property1>Checked</Property1>
<Property2></Property2>
<IsMultiList>No</IsMultiList>
<PropertyToCheck></PropertyToCheck>
<PropertyToCheckValue></PropertyToCheckValue>
</Control>
<Control>
<Type>System.Windows.Forms.ComboBox</Type>
<Property1>SelectedIndex</Property1>
<Property2>Text</Property2>
<IsMultiList>No</IsMultiList>
<PropertyToCheck>DropDownStyle</PropertyToCheck>
<PropertyToCheckValue>
DropDownList</PropertyToCheckValue>
</Control>
<Control>
<Type>System.Windows.Forms.ListBox</Type>
<Property1>SelectedIndex</Property1>
<Property2></Property2>
<IsMultiList>Yes</IsMultiList>
<PropertyToCheck>SelectionMode</PropertyToCheck>
<PropertyToCheckValue>One</PropertyToCheckValue>
</Control>
<Control>
<Type>System.Windows.Forms.CheckedListBox</Type>
<Property1></Property1>
<Property2></Property2>
<IsMultiList>Yes</IsMultiList>
<PropertyToCheck></PropertyToCheck>
<PropertyToCheckValue></PropertyToCheckValue>
</Control>
<Control>
<Type>System.Windows.Forms.MonthCalendar</Type>
<Property1>SelectionStart</Property1>
<Property2>SelectionEnd</Property2>
<IsMultiList>No</IsMultiList>
<PropertyToCheck></PropertyToCheck>
<PropertyToCheckValue></PropertyToCheckValue>
</Control>
</Controls>