La liaison de données pour une classe personnalisée en C#
J'ai une classe comme ceci:
public class Person
{
Int32 id;
Boolean isMarried = false;
String displayName;
Detail mainDetail = new Detail();
Detail partnerDetail = new Detail();
}
public class Detail
{
String firstName;
String lastName;
DateTime dob;
String address;
}
Et puis un Formulaire qui a sélectionné des zones de texte pour afficher les informations à l'objet. C'est être mis à jour lorsque la personne sélectionnée est modifiée.
Maintenant, pour de simples domaines, tels que l'affichage, c'est un morceau de gâteau:
txtTitle.DataBindings.Add("Text", selectedPerson, "displayName");
mais comment puis-je lier une autre zone de texte pour le prenom de la mainDetail propriété?
Cette tentative:
txtFirstNameMain.DataBindings.Add("Text", selectedPerson.mainDetail, "firstName");
renvoie une erreur d'exécution:
"Ne peut pas se lier à la propriété ou de la colonne firstName sur la source de données.
Nom du paramètre: dataMember"
Merci pour votre aide!
- Vous devez utiliser des propriétés publiques, mais je ne pense pas que c'est votre problème, sinon pas de liaison serait de travailler. - Je suppose que vous venez de rendre le code plus petite de poster.
Vous devez vous connecter pour publier un commentaire.
vous avez besoin d'utiliser les propriétés de liaison de données, comme suit:
Vous devez utiliser les propriétés de liaison, pas de champs.
Essayez ceci:
Je pense que c'est la syntaxe correcte.
Edit:
Que devrait être la bonne syntaxe. Voir ici pour un peu de documentation sur la liaison de données de la propriété.
Il peut y avoir un problème avec votre code: Vous ne pouvez pas être en mesure d'utiliser la liaison de données contre les champs, de sorte que vous pouvez avoir à les convertir à des propriétés.
Windows forms de liaison de données fonctionne sur des propriétés et ne prend pas en charge les champs. Les propriétés d'une liaison à doit également être déclaré comme
public
.