2012-12-07 5 views

risposta

-3

Non è possibile modificare lo stile del bordo di ogni cella a meno che non venga creata una vista griglia di dati derivati.

+5

non vero, questo può essere fatto con un DataGridView personalizzato. Ce n'è una sul sito Microsoft: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewadvancedborderstyle.aspx –

+3

questo è falso, puoi semplicemente sovrascrivere il metodo paint delle celle – Edmondo1984

9

È possibile disegnare un rettangolo. In questo esempio metto un boder rosso sulle celle selezionate.

private void dataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    if (e.RowIndex >= 0 && e.ColumnIndex >= 0) 
    { 
     if (dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected == true) 
     { 
      e.Paint(e.CellBounds, DataGridViewPaintParts.All & ~DataGridViewPaintParts.Border); 
      using (Pen p = new Pen(Color.Red, 1)) 
      { 
       Rectangle rect = e.CellBounds; 
       rect.Width -= 2; 
       rect.Height -= 2; 
       e.Graphics.DrawRectangle(p, rect); 
      } 
      e.Handled = true; 
     } 
    } 
} 
+0

esempio funziona solo se la cella è selezionata. Cosa succede se ho bisogno di creare diversi rettangoli? – Doro

+0

@doro Puoi semplicemente cambiare il condizionale: selezionato == true –

+0

Ho appena provato ma non funziona. – Doro

0

MSDN descrive un metodo in cui è possibile ereditare dal DataGridView per sovrascrivere gli stili di confine di default: DataGridViewAdvancedBorderStyle Class

Il metodo dipinto sopra è più semplice, però.

Problemi correlati