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.