Datagridview: Comment définir une cellule en mode d'édition?
J'ai besoin de définir par programmation d'une cellule en mode d'édition. Je sais que le réglage de la cellule comme CurrentCell, puis appelez la méthode BeginEdit(bool), il doit se produire, mais dans mon cas, ça ne marche pas.
Je le veux vraiment, avec mon DGV avec plusieurs colonnes, l'utilisateur ne peut sélectionner et modifier également les deux premiers. Les autres colonnes sont déjà en lecture seule, mais l'utilisateur peut sélectionner, et c'est ce que je ne veux pas.
Donc, je pensais, indiquer à l'utilisateur ONGLET à chaque fois qu'il a fini d'écrire sur la cellule, puis sélectionnez la deuxième cellule, puis onglet de nouveau et de sélectionner et de commencer à modifier la ligne suivante de la première cellule...
Comment puis-je faire cela?
Vous devez vous connecter pour publier un commentaire.
Réglage de la
CurrentCell
et puis l'appel deBeginEdit(true)
fonctionne bien pour moi.Le code suivant montre un gestionnaire d'événements pour l'
KeyDown
événement qui définit une cellule pour être modifiable.Mon exemple n'implémente une des clés de la presse remplace mais en théorie, les autres devraient fonctionner de la même. (et je suis toujours réglage de l' [0][0] la cellule pour être modifiable, mais n'importe quelle autre cellule devrait fonctionner)
Si vous n'avez pas trouvé précédemment, les DataGridView FAQ est une grande ressource, écrit par le responsable de programme pour le contrôle DataGridView, qui couvre la plupart de ce que vous voulez faire avec le contrôle.
Bien, je voudrais vérifier si l'une de vos colonnes sont définies comme
ReadOnly
. Je n'ai jamais eu à utiliser BeginEdit, mais peut-être qu'il est légitime d'utiliser. Une fois que vous avez faitdataGridView1.Columns[".."].ReadOnly = False;
, les champs qui ne sont pasReadOnly
doit être modifiable. Vous pouvez utiliser le DataGridViewCellEnter
événement pour déterminer ce que la cellule a été entré et puis tourner sur la modification de ces cellules après que vous avez passé de l'édition dans les deux premières colonnes de la prochaine série de colonnes et de désactiver l'édition sur les deux dernières colonnes.Je sais que cette question est assez vieux, mais pensé que je pourrais partager avec vous quelques le code de démonstration cette question m'a aidé avec.
Button
et unDataGridView
Click
événement pour button1CellClick
événement pour DataGridView1EditMode
àEditProgrammatically
Noter que la colonne des numéros d'index pouvez modifier à partir de plusieurs presses le bouton de bouton, j'ai donc toujours se référer aux colonnes par leur nom pas la valeur de l'indice. J'avais besoin d'incorporer David Hall de la réponse dans mon démo qui avait déjà ComboBoxes donc sa réponse a très bien fonctionné.
Je sais que c'est une vieille question, mais aucune réponse n'a fonctionné pour moi, parce que je voulais de façon fiable (toujours être capable de) ensemble de la cellule dans le mode d'édition lorsque, éventuellement, de l'exécution d'autres événements comme le Bouton de Barre d'outils clics, les sélections de menu, etc. qui peuvent influer sur le focus par défaut après ces évènements. J'ai fini par avoir besoin d'une minuterie et d'invoquer. Le code suivant est un nouveau composant dérivé de DataGridView. Ce code me permet de tout simplement faire un appel à
myXDataGridView.CurrentRow_SelectCellFocus(myDataPropertyName);
à chaque fois que je veux de fixer arbitrairement un lié aux données de la cellule en mode d'édition (en supposant que la cellule n'est Pas en mode ReadOnly).