You should have just made it one method since they doing the exact same thing. Pass a true/false value to the method depending on if you want the controls enabled or disabled.
Next, if the controls your enabling/disabling are inside another container on the TabControl, your code, as written, will not change them. Your code will have to modify your code to call itself with a new parent control.
public void SetControlsState(Control parentControl, bool enable)
{
try
{
foreach (Control c in parentControl.Controls)
{
c.Enabled = enable;
if (c.HasChildren)
{
SetControlsState(c, enable);
}
}
}
catch (Exception e1)
{
ExceptionHandler(e1.ToString(), "Unable to change the state of controls.", e1);
}
}
Lastly, the visual state of your controls will not change until your code call tree exits and your app returns to an idle state. That's when your form will process the WM_PAINT messages it's been getting from Windows and will actually redraw the controls on-screen with the new state.