J'ai un DataGridView. Je mis son accessoire .DataSource être un BindingList de mes propres objets: un BindingList<IChessItem>
Formatage DataGridView conditionnel
J'ai ensuite créé des colonnes pour elle ..
DataGridViewTextBoxColumn descColumn = new DataGridViewTextBoxColumn();
descColumn.DataPropertyName = "Description";
descColumn.HeaderText = "Description";
descColumn.Width = 300;
DataGridViewTextBoxColumn gameIDColumn = new DataGridViewTextBoxColumn();
gameIDColumn.DataPropertyName = "GameID";
gameIDColumn.HeaderText = "Game ID";
gameIDColumn.Width = 60;
dataGrid.Columns.Add(descColumn);
dataGrid.Columns.Add(gameIDColumn);
Ma question est .. Je veux colorer l'une des colonnes VERT basé sur des données dans un autre champ de ma liste de liaison). Comment puis-je faire ceci?
Je n'ai pas vraiment montrer ce domaine, je veux juste agir sur les données qu'il contient ..
dans mon cas, l'un des champs de IChessItem indique si le dossier est nouveau, et je Vous voulez colorer les autres champs de la vue de données pour refléter cela.
intéressant. Cela semble devoir fonctionner, malheureusement, this.dataGridView1.Columns [e.ColumnIndex] .Name renvoie "" chaque fois qu'il arrive ici. Il semble que cela devrait fonctionner. – KevinDeus
okok .. Je l'ai eu à travailler en utilisant le .DataPropertyName (depuis que cela a été configuré dans mon code ci-dessus), et en le renvoyant à l'élément de données (comme mon sourcelist a été effacé par ce point ..) IChessItem item = ((BindingList) this.dgvAvailableMoves.DataSource) [e.RowIndex]; –
KevinDeus
Une approche plus robuste consiste à comparer directement à la colonne au lieu de vérifier le nom de la colonne, c'est à dire 'if (dataGridView.Columns [e.ColumnIndex] == dataGridViewColumnXXX) ...' –