2009-10-11 5 views
3

J'ai un DataGridView en mode virtuel. J'ai seulement implémenté le gestionnaire d'événements CellValueNeeded comme décrit dans http://msdn.microsoft.com/en-us/library/15a31akc.aspx.comment modifier par programme la valeur de cellule d'un datagridview en mode virtuel?

L'implémentation du reste des événements ne semble nécessaire que si vous voulez pouvoir éditer les cellules manuellement.

Je voudrais éditer par programmation une valeur de cellule DataGridView.

J'ai essayé en utilisant le code suivant:

DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically; 
DataGridView1.BeginEdit(false); 
DataGridView1.Rows[0].Cells[0].Value = "testing new value"; 
//just using a random parameter here, not sure it is needed when editing programmatically 
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.LeaveControl); 
DataGridView1.Refresh(); 

mais sans succès :(

toute aide serait appréciée

Répondre

7

Lorsque vous utilisez le mode virtuel, vous fournissez votre propre logique pour relier Par conséquent, pour modifier une valeur de cellule, vous devez modifier la valeur dans la source de données sous-jacente et appeler le Refresh pour actualiser la valeur affichée (cela provoquera l'événement CellValueNeeded). o être appelé pour toutes les cellules affichées)

+0

Merci. Par hasard, savez-vous s'il existe un moyen de savoir quelles lignes sont actuellement affichées en mode virtuel? Cela me donnerait une chance de déterminer si une actualisation est nécessaire. –

+1

Vous pouvez utiliser les propriétés FirstDisplayedScrollingColumnIndex et FirstDisplayedScrollingRowIndex, ainsi que les méthodes DisplayedColumnCount et DisplayedRowCount. –

+0

super! ce contrôle a tellement de propriétés qu'il est parfois difficile de trouver ce que vous cherchez. Merci beaucoup! –

Questions connexes