2017-05-23 2 views
1

J'ai défini la largeur du diviseur et la hauteur du séparateur à zéro, puis utilisé dataGridview1.GridColor = Color.Red pour définir la couleur des diviseurs. Cela n'affecte cependant pas l'en-tête. Comment puis-je changer la couleur de l'espace entre les cellules d'en-tête? Par exemple, comment puis-je rendre cet espace rouge également?comment définir la couleur de dividerwidth dans l'en-tête de colonne

datagrid example with white divider

+0

Avez-vous vu [ce] (https://msdn.microsoft.com/en-us/library/system.windows.forms. datagridview.columnheadersborderstyle% 28v = vs.110% 29.aspx)? – TaW

+0

yup, j'ai joué avec ce code sans trouver de réponse. (intéressant, ce code d'exemple omis dataGridView1.EnableHeadersVisualStyles = false qui est nécessaire.) – 4mla1fn

+0

Je voulais dire la 1ère note, qui pour moi implique que ce n'est pas possible sans désactiver EnableHeadersVisualStyles et qui voudrait que ?? Donc, je suppose que vous avez besoin de propriétaire les columnheaders .. – TaW

Répondre

1

Mise à jour: L'astuce est de permettre à vos propres styles à appliquer dans les en-têtes. Pour ce faire, vous avez besoin de cette ligne pour désactiver le drapeau EnableHeadersVisualStyles:

dataGridView1.EnableHeadersVisualStyles = false; 

Sans elle les paramètres utilisateur sont appliqués. Voir MSDN


ancienne réponse:

Vous pouvez toujours faire des choses par leur propriétaire en tirant les cellules d'en-tête.

Voici un court exemple:

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    if (e.RowIndex >= 0) return; // only the column headers! 
    // the hard work still can be done by the system: 
    e.PaintBackground(e.CellBounds, true); 
    e.PaintContent(e.CellBounds); 
    // now for the lines in the header.. 
    Rectangle r = e.CellBounds; 
    using (Pen pen0 = new Pen(dataGridView1.GridColor, 1)) 
    { 
     // first vertical grid line: 
     if (e.ColumnIndex < 0) e.Graphics.DrawLine(pen0, r.X, r.Y, r.X, r.Bottom); 
     // right border of each cell: 
     e.Graphics.DrawLine(pen0, r.Right - 1, r.Y, r.Right - 1, r.Bottom); 
    } 
    e.Handled = true; // stop the system from any further work on the headers 
} 

enter image description here