J'ai une application de formulaires Windows C # simple qui devrait afficher un DataGridView. En tant que Databindinging, j'ai utilisé un objet (sélectionnée une classe appelée voiture) et c'est ce à quoi il ressemble: Cependant, lorsque je défini la propriété DataGridView Quelqu'un a suggéré de définir allowReSertadrows code> to code> to < Code> true code>, il n'y a toujours pas peu * qui me permet d'ajouter des lignes. p>
carbindingsource.allandadd code> to
vrai code > Cependant, quand je le fais, je reçois un
mancheMethodexception code> qui dit que mon constructeur n'a pas pu être trouvé. p> p>
3 Réponses :
Vous devez ajouter un gestionnaire d'événements supplémentaires:
public partial class Form1 : Form { private BindingSource carBindingSource = new BindingSource(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource = carBindingSource; this.carBindingSource.AddingNew += new AddingNewEventHandler(carBindingSource_AddingNew); carBindingSource.AllowNew = true; } void carBindingSource_AddingNew(object sender, AddingNewEventArgs e) { e.NewObject = new Car(); } }
Votre classe de voiture doit avoir un constructeur sans paramètre et votre DataSource doit être quelque chose comme une bande de liaison
Modifier la classe de voiture à ceci: p>
void bindingSource_AddingNew(object sender, AddingNewEventArgs e) { e.NewObject = new Car("",0); }
BindingList a résolu mon problème. DataGridView1.dataSource = Nouvellelist
J'ai récemment découvert que si vous implémentez votre propre liste de liaison à l'aide de the MSDN Article pour Si la DataGridView est liée aux données, l'utilisateur est autorisé à ajouter des lignes si cette propriété et la propriété ibindinglist de la source de données.Allowew sont définies sur True. P>
blockQuote> ibindinglist code> Vous devez retourner
true code> dans votre
SupportSchangenotification code> en plus de
ALOWHOW code>. P>
DataGridView.allowAserAdrows CODE> Spécifie la remarque suivante Toutefois: P>
Je pense que vous aurez besoin d'un paramètre moins constructeur (car aucune information n'est disponible pour être transmise à votre constructeur de 2 paramètres), comment pouvez-vous le lier?
J'ai dû utiliser un tout à fait sur ma source de liaison.