2009-09-30 4 views
0

Généralement, lorsque j'ajoute un contrôle à un formulaire à l'aide de l'interface graphique de Visual Studio, il écrit tout le code qui définit le contrôle dans un fichier de classe partielle distinct nommé ".Designer.CS". Cette classe partielle contient généralement des champs privés pour chaque contrôle afin que la classe partielle non-designer puisse accéder aux contrôles.Comment êtes-vous supposé accéder à un DataGridView dans un formulaire?

J'ai ajouté un DataGridView dans un GroupBox ** à un formulaire. Cependant, un champ n'est pas généré pour la grille dans la classe partielle du concepteur. Le contrôle est créé correctement mais aucun champ n'est défini que je peux accéder au contrôle à partir de mon code.

J'ai essayé de changer le fichier du concepteur afin que le contrôle se réfère à un champ privé plutôt qu'à une variable locale. Cela fonctionne, mais je continue d'essayer d'éditer les propriétés de DataGridView à travers la fenêtre de propriétés de Visual Studio, qui finit par supprimer ce champ et casser mon code.

Y a-t-il une raison pour laquelle un champ privé n'est pas configuré pour DataGridViews par Visual Studio dans la classe partielle du concepteur d'un formulaire? Comment suis-je supposé accéder au réseau autrement?

Répondre

0

Avez-vous hérité de DataGridView et apporté des modifications? Le formulaire devrait certainement créer une référence au concepteur ajouté DGV et je ne sais pas pourquoi cela ne se produirait pas. Dans tous les cas, vous ne devez jamais apporter de modifications manuelles aux classes générées par le concepteur car ces modifications seront interrompues lorsque le concepteur régénérera cette classe.

Vous pouvez toujours ajouter manuellement DataGridView via le code à votre GroupBox:

DataGridView dgv = new DataGridView(); dgv.Dock = DockStyle.Fill;

myGroupBox.Controls.Add (dgv);

+0

également, avez-vous essayé de créer un nouveau UserControl? Ajoutez-lui le DataGridView, puis ajoutez ce UserControl à votre GroupBox. – TJF

0

Semble impair. Que diriez-vous d'ajouter à nouveau votre dataagridview au formulaire, sans modifier ses propriétés? Il devrait être nommé "datagridview1" par défaut (en supposant qu'il n'y ait qu'un seul datagridview sur le formulaire). Maintenant, quand vous retournez dans le code, est-ce que l'intellisense le reconnaît quand vous entrez "ceci"? Si c'est le cas, c'est probablement dans le code Designer quelque part, mais vous ne le voyez pas. Juste une idée.

Questions connexes