Вот как это делается
class MyDataSouce : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private bool enabled=true, visible=true;
public bool Enabled {
get { return enabled; }
set {
enabled= value;
PropertyChanged(this, new PropertyChangedEventArgs("Enabled"));
}
}
public bool Visible {
get { return visible; }
set {
visible = value;
PropertyChanged(this, new PropertyChangedEventArgs("Visible"));
}
}
}
Теперь свяжите элементы управления в вашей форме с вашим источником данных.
MyDataSouce dataSource = new MyDataSouce();
foreach (Control ctl in this.Controls) {
ctl.DataBindings.Add(new Binding("Enabled", dataSource, "Enabled"));
ctl.DataBindings.Add(new Binding("Visible", dataSource, "Visible"));
}
Теперь вы можете включать / отключать элементы управления, например,
dataSource.Enabled = false;