Comme mentionné ci-dessus, il semble impossible de modifier l'apparence visuelle des valeurs booléennes dans un scénario lié aux données. Même DataGridViewCellStyle.FormatProvider ne fonctionne pas correctement avec des types comme System.Int32, System.Int64, System.Decima, etc.
par conséquent, je trouve une solution qui fonctionne pour moi. Probablement ce n'est pas la meilleure solution mais actuellement cela correspond à mes besoins. -je manipuler le événement DataGridView.ColumnAdded et remplacer DataGridViewCheckBoxColumn avec DataGridViewTextBoxColumn. Ensuite, j'utilise l'événement CellFormating (recommandé par Microsoft, voir les liens ci-dessus) pour formater les données source.
private DataGridViewTextBoxColumn textBoxColumn = null;
void _dataGrid_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
// Avoid recursion
if (e.Column == textBoxColumn) return;
DataGridView gridView = sender as DataGridView;
if (gridView == null) return;
if(e.Column is DataGridViewCheckBoxColumn)
{
textBoxColumn = new DataGridViewTextBoxColumn();
textBoxColumn.Name = e.Column.Name;
textBoxColumn.HeaderText = e.Column.HeaderText;
textBoxColumn.DataPropertyName = e.Column.DataPropertyName;
gridView.Columns.Insert(e.Column.Index, textBoxColumn);
gridView.Columns.Remove(e.Column);
}
}
void _dataGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridViewColumn col = _dataGrid.Columns[e.ColumnIndex];
try
{
if (col.Name == "IsMale")
{
bool isMale = Convert.ToBoolean(e.Value);
e.Value = isMale ? "male" : "female";
}
}
catch (Exception ex)
{
e.Value = "Unknown";
}
}
Je ne vois pas de propriété 'ColumnType': Me.DGV.Columns ("ColName").? – Simon
J'ai clarifié un peu comment faire ça! –
Bonne idée, mais je dois le faire par programmation car le DGV est construit dynamiquement au moment de l'exécution. – Simon