Pour le moment je n'arrive qu'à changer la couleur de tous les en-tête d'un coup. Voici comment je fais:
CODE
private void dataGrid1_MouseDown(object o, MouseEventArgs mea)
{
DataGrid.HitTestInfo hitTest;
if (mea.Button == MouseButtons.Left)
{
dataGrid1 = (DataGrid)o;
// On fait un hittest pour savoir ou l'on a pointe
hitTest = dataGrid1.HitTest(mea.X, mea.Y);
// Si le hittest est sur un header de colonne, on continue
if (hitTest.Type == DataGrid.HitTestType.ColumnHeader)
{
// on recupere le nom de la colonne pour l'operation de tri plus bas
string columnName = ((DataTable)((DataView)dataGrid1.DataSource).Table).Columns[hitTest.Column].ColumnName;
if (dataGrid1.HeaderBackColor != SystemColors.ControlDark)
// on veut foncer la couleur des colonnes
{
dataGrid1.HeaderBackColor = SystemColors.ControlDark;
}
// on veut remettre la couleur par defaut
else
{
dataGrid1.HeaderBackColor = defaultColor;
}
(...)
{
DataGrid.HitTestInfo hitTest;
if (mea.Button == MouseButtons.Left)
{
dataGrid1 = (DataGrid)o;
// On fait un hittest pour savoir ou l'on a pointe
hitTest = dataGrid1.HitTest(mea.X, mea.Y);
// Si le hittest est sur un header de colonne, on continue
if (hitTest.Type == DataGrid.HitTestType.ColumnHeader)
{
// on recupere le nom de la colonne pour l'operation de tri plus bas
string columnName = ((DataTable)((DataView)dataGrid1.DataSource).Table).Columns[hitTest.Column].ColumnName;
if (dataGrid1.HeaderBackColor != SystemColors.ControlDark)
// on veut foncer la couleur des colonnes
{
dataGrid1.HeaderBackColor = SystemColors.ControlDark;
}
// on veut remettre la couleur par defaut
else
{
dataGrid1.HeaderBackColor = defaultColor;
}
(...)
Le composant en question est un System.Windows.Forms.DataGrid. Je suis tout à fait enclin à utiliser un composant OpenNETCF si celui-ci permet de faire ce que je souhaite.