2011-10-23 10 views
9

Estoy intentando vincular algunos objetos de Winform a una clase personalizada, más específicamente una instancia de mi clase personalizada que he agregado al Formulario en el código. C#, .NET 2010 Express.Vinculación de datos de Winforms a la clase personalizada

Por ejemplo, aquí es un fragmento de la clase, y el UserInfoForm

public class UserInfo 
{ 
    [XmlAttribute] 
    public string name = "DefaultName"; 

    [XmlAttribute] 
    public bool showTutorial = true; 

    [XmlAttribute] 
    public enum onCloseEvent = LastWindowClosedEvent.Exit; 
} 

public enum LastWindowClosedEvent 
{ 
    MainMenu, 
    Exit, 
    RunInBackground 
} 


public partial class Form1 : Form 
{ 
    UserInfo userToBind = new UserInfo(); 

    TextBox TB_userName = new TextBox(); 
    CheckBox CB_showTutorial = new CheckBox(); 
    ComboBox DDB_onCloseEvent = new ComboBox(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 
} 

Ahora, me gustaría enlazar los valores de estos controles de formulario a su valor respectivo en userToBind, pero no han tenido suerte . Todos los tutoriales que puedo encontrar están desactualizados (2002), o sobre controles de enlace a un conjunto de datos u otro tipo de base de datos.

Obviamente estoy pasando por alto algo, pero no he descubierto qué.

Muchas gracias por cualquier información que pueda compartir.

Más información: UserInfo está diseñado para ser compatible con XML, por lo que se puede guardar como un perfil de usuario. UserInfo contendrá otras clases XML personalizadas, todas anidadas bajo UserInfo, y muchos controles solo necesitarán acceder a estas clases secundarias.

Respuesta

16

Puede usar la propiedad DataBindings de sus controles (cuadro de texto, casilla de verificación ...) para agregar un enlace a un control específico. Por ejemplo:

public Form1() 
{ 
    InitializeComponent(); 
    TB_userName.DataBindings.Add("Text", userToBind, "name"); 
} 

Además, IIRC, el enlace de datos sólo funciona en properties, por lo que primero deberá modificar su clase UserInfo en consecuencia. Además, si desea que la IU se actualice automáticamente cuando modifique sus objetos en el código, debe implementar INotifyPropertyChanged en sus clases personalizadas.

+3

También encontré que las propiedades deben ser públicas, internas no funcionó para mí. – RichieACC

Cuestiones relacionadas