Bonjour
J'ai identifié qq problemes lors de la mise en couleur de cellule de DGV
C'est asser subtil
Voir le code ci dessous
1- J'ouvre une forme qui doit afficher un dgv depuis une liste passée dans le constructeur
j'ai placé le traitement du DGV dans une fonction
Ce traitement effectue entre autre la mise en couleur de cellules du DGV en fonction de valeurs dans le datasource
Constats :
1- Si j'appelle cette fonction dans le constructeur de la form apres initialisecomponent, le DGV s'affiche correctement mais PAS de couleurs
2- Si j'appelle cette fonction a la main a l'aide d'un bouton dans la form : TOUT est ok, les couleurs aussi
3- Si j'appelle cette fonction depuis l'event Shown, c'est bon aussi MAIS
l'instruction
Qui concerne comme par hazard la colonne dont je modifie les couleurs se plante (mais si je change le width d'une autre colonne : pas de problème)
Code : Sélectionner tout - Visualiser dans une fenêtre à part dgv_lstMeta.Columns["Value"].Width = 50;
C'est grave docteur ?
On peut faire qq chose
Merci pour votre aide ou suggestions ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 { public MetaRange activeRange; C_Document document; public FrmMetaRegio(C_Document document) { this.document = document; InitializeComponent(); // fillDgv(); } private void fillDgv() { dgv_lstMeta.DataSource = null; dgv_lstMeta.DataSource = ((MapDataProvider)this.document.DataProvider).MetaRanges; for (int i = 0; i < dgv_lstMeta.ColumnCount; i++) { dgv_lstMeta.Columns[i].Visible = false; } dgv_lstMeta.Columns["Name"].Visible = true; dgv_lstMeta.Columns["Value"].Visible = true; dgv_lstMeta.Columns["Value"].Width = 50; for (int i = 0; i < dgv_lstMeta.Rows.Count - 1; i++) { Color Kleur = (Color)dgv_lstMeta["Color", i].Value; dgv_lstMeta["value", i].Style.BackColor = Kleur; } } private void button1_Click(object sender, System.EventArgs e) { fillDgv(); } private void FrmMetaRegio_Shown(object sender, System.EventArgs e) { // fillDgv(); } }
Partager