Binding property to control in Winforms

cubski picture cubski · May 4, 2011 · Viewed 54.2k times · Source

What is the best way to bind a property to a control so that when the property value is changed, the control's bound property changes with it.

So if I have a property FirstName which I want to bind to a textbox's txtFirstName text value. So if I change FirstName to value "Stack" then the property txtFirstName.Text also changes to value "Stack".

I know this may sound a stupid question but I'll appreciate the help.

Answer

Stecya picture Stecya · May 4, 2011

You must implement INotifyPropertyChanged And add binding to textbox.

I will provide C# code snippet. Hope it helps

class Sample : INotifyPropertyChanged
{
    private string firstName;
    public string FirstName
    {
        get { return firstName; }
        set
        {
            firstName = value;
            InvokePropertyChanged(new PropertyChangedEventArgs("FirstName"));
        }
    }

    #region Implementation of INotifyPropertyChanged

    public event PropertyChangedEventHandler PropertyChanged;

    public void InvokePropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, e);
    }

    #endregion
}

Usage :

 Sample sourceObject = new Sample();
 textbox.DataBindings.Add("Text",sourceObject,"FirstName");
 sourceObject.FirstName = "Stack";