Trigger4Win/Trigger/Extensions/Control.cs
2015-04-10 00:09:58 +00:00

148 lines
No EOL
4.1 KiB
C#

using System;
using System.Windows.Forms;
namespace ExtensionMethods
{
/// <summary>
/// <para>Add extensions to <c><see cref="Control"/></c></para>
/// </summary>
public static class ControlExtensions
{
/// <summary>
/// <para>Reset the value of all <see cref="Control"/>s in the given <paramref name="Control"/></para>
/// <para>Empty <see cref="TextBox"/>es, set <see cref="ComboBox"/>es to N/A, uncheck <see cref="CheckBox"/>es.</para>
/// </summary>
/// <param name="Control">The <see cref="Control"/> whose children <see cref="Control"/>s shall be reset</param>
public static void clearControls(this Control Control)
{
foreach (Control ctrl in Control.Controls)
{
ctrl.BackColor = System.Drawing.Color.White;
switch (ctrl.GetType().Name)
{
case "TextBox":
case "RichTextBox":
((TextBox)ctrl).Text = String.Empty;
((TextBox)ctrl).BackColor = System.Drawing.Color.White;
break;
case "ComboBox":
((ComboBox)ctrl).Text = String.Empty;
break;
case "CheckBox":
((CheckBox)ctrl).Checked = false;
break;
case "Control":
case "Panel":
case "SplitContainer":
case "SplitterPanel":
case "TabPage":
ctrl.clearControls();
break;
case "CheckedListBox":
foreach (object i in ((CheckedListBox)ctrl).CheckedIndices)
((CheckedListBox)ctrl).SetItemChecked((int)i, false);
break;
#if DEBUG
case "ProgressBar":
case "Button":
case "Label":
case "DataGridView":
case "DataGrid":
case "PictureBox":
break;
default:
MessageBox.Show(ctrl.Name + ": " + ctrl.GetType());
break;
#endif
}
}
}
/// <summary>
/// <para>Set .readOnly or .Enabled of all <see cref="Control"/>s in the given <paramref name="Control"/> to <paramref name="readOnly"/></para>
/// </summary>
/// <param name="Control">The <see cref="Control"/> which children <see cref="Control"/>s behaviour shall be set to <paramref name="readOnly"/></param>
/// <param name="readOnly">Read only</param>
public static void setControlsReadOnly(this Control Control, bool readOnly)
{
foreach (Control ctrl in Control.Controls)
{
switch (ctrl.GetType().Name)
{
case "TextBox":
((TextBox)ctrl).ReadOnly = readOnly;
break;
case "RichTextBox":
((RichTextBox)ctrl).ReadOnly = readOnly;
break;
case "ComboBox":
((ComboBox)ctrl).ReadOnly(readOnly);
break;
case "CheckBox":
case "Button":
case "CheckedListBox":
ctrl.Enabled = !readOnly;
break;
case "Panel":
case "TabPage":
case "SplitContainer":
case "SplitterPanel":
ctrl.setControlsReadOnly(readOnly);
break;
#if DEBUG
case "ProgressBar":
case "Label":
case "DataGridView":
case "DataGrid":
case "PictureBox":
break;
default:
MessageBox.Show(ctrl.Name + ": " + ctrl.GetType().Name);
break;
#endif
}
}
}
/// <summary>
/// <para>Set .Enabled of all <see cref="Control"/> s in the given <paramref name="Control"/> to <paramref name="enabled"/></para>
/// </summary>
/// <param name="Control">The <see cref="Control"/> which children <see cref="Control"/>s shall be reset</param>
/// <param name="enabled">Enable</param>
public static void setControlsEnabled(this Control Control, bool enabled)
{
foreach (Control ctrl in Control.Controls)
{
switch (ctrl.GetType().Name)
{
case "TextBox":
case "RichTextBox":
case "ComboBox":
case "CheckBox":
case "Button":
case "CheckedListBox":
ctrl.Enabled = enabled;
break;
case "Panel":
case "TabPage":
case "SplitContainer":
case "SplitterPanel":
ctrl.setControlsEnabled(enabled);
break;
#if DEBUG
case "ProgressBar":
case "Label":
case "DataGridView":
case "DataGrid":
case "PictureBox":
break;
default:
MessageBox.Show(ctrl.Name + ": " + ctrl.GetType().Name);
break;
#endif
}
}
}
}
}