2010-01-13 6 views
4

Nous avons l'opération suivante à effectuer sur le contrôle dans notre application WinForms.la liaison de données et contrôle

public class BindableDataItem 
{ 
    public bool Visible {get; set; } 
    public bool Enabled {get;set;} 

} 

Maintenant, nous voulons lier le BindableDataItem à un TextBox.

Ici lient l'association.

TextBox.Enabled < ==> BindableDataItem.Enabled

TextBox.Visible < ==> BindableDataItem.Visible

maintenant un objet BindableDataItem peut associée à de nombreux contrôles de type différent.

En appelant (BindableDataItem) obj.Enabled = false doit désactiver tous les contrôles liés à l'objet BindableDataItem.

Toute aide sera appréciée.

Répondre

2

Voici comment cela se fait

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")); 
     } 
    } 
} 

lient maintenant les contrôles dans votre formulaire à votre source de données.

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")); 

} 

Maintenant, vous pouvez activer/désactiver les contrôles par exemple

dataSource.Enabled = false; 

0

afin de se lier au travail, ce BindableDataItem doit mettre en œuvre INotifyPropertyChange Interface. l'avez-vous fait?

+0

Je le INotifyPropertyChange mis en œuvre. Merci. Je pense, je dois utiliser les DataBindings.Add (...) –

Questions connexes