Propiedad de enlace para controlar en Winforms

¿Cuál es la mejor manera de vincular una propiedad a un control para que cuando se cambie el valor de la propiedad, la propiedad vinculada del control cambie con él?

Entonces, si tengo una propiedad FirstName que quiero vincular al valor de texto txtFirstName de una txtFirstName texto. Entonces, si cambio FirstName al valor “Stack”, la propiedad txtFirstName.Text también cambia al valor “Stack”.

Sé que esto puede sonar como una pregunta estúpida, pero agradeceré la ayuda.

Debe implementar INotifyPropertyChanged Y agregar el enlace al cuadro de texto.

Proporcionaré un fragmento de código de C #. Espero eso ayude

 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 } 

Uso:

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

Una versión simplificada de la respuesta aceptada que NO requiere que escriba nombres de propiedades manualmente en cada conjunto de propiedades como OnPropertyChanged("some-property-name") . En su lugar, simplemente llama a OnPropertyChanged() sin parámetros:

Necesitas .NET 4.5 mínimo. CallerMemberName está en el System.Runtime.CompilerServices nombres System.Runtime.CompilerServices

 public class Sample : INotifyPropertyChanged { private string _propString; private int _propInt; //====================================== // Actual implementation //====================================== public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { var handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } //====================================== // END: actual implementation //====================================== public string PropString { get { return _propString; } set { // do not trigger change event if values are the same if (Equals(value, _propString)) return; _propString = value; //=================== // Usage in the Source //=================== OnPropertyChanged(); } } public int PropInt { get { return _propInt; } set { // do not allow negative numbers, but always trigger a change event _propInt = value < 0 ? 0 : value; OnPropertyChanged(); } } } 

El uso sigue siendo el mismo:

 var source = new Sample(); textbox.DataBindings.Add("Text", source, "PropString"); source.PropString = "Some new string"; 

Espero que esto ayude a alguien.