2012-12-07 20 views
5

मुझे प्रोग्रामिंग की आवश्यकता है सेलफॉर्मेटिंग ईवेंट में कुछ कक्षों के सीमा रंग को बदलने के लिए। क्या एक व्यक्तिगत सेल का बोर्ड रंग बदला जा सकता है?DataGridView में कुछ कक्षों के सीमा रंग को कैसे बदलें?

उत्तर

-3

व्यक्तिगत सेल सीमा शैली को बदलने का कोई तरीका नहीं है जब तक कोई व्युत्पन्न डेटा ग्रिड व्यू नहीं बनाया जाता है।

+5

सत्य नहीं है, यह एक कस्टम DataGridView के साथ किया जा सकता है। माइक्रोसॉफ्ट साइट पर एक है: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewadvancedborderstyle.aspx –

+3

यह गलत है, आप बस कोशिकाओं की पेंट विधि को ओवरराइड कर सकते हैं – Edmondo1984

9

आप एक आयताकार खींच सकते हैं। इस उदाहरण में मैंने चयनित कोशिकाओं पर एक लाल बोडर लगाया। DataGridViewAdvancedBorderStyle Class

चित्रकला विधि ऊपर सरल है, हालांकि यह है:

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

उदाहरण केवल तभी काम करता है जब सेल चुना जाता है। अगर मुझे कई आयत बनाने की ज़रूरत है तो क्या होगा? – Doro

+0

@doro आप केवल सशर्त बदल सकते हैं: चयनित == सत्य –

+0

मैंने अभी कोशिश की लेकिन काम नहीं करता है। – Doro

0

MSDN एक विधि जहां DataGridView से विरासत कर सकते हैं डिफ़ॉल्ट सीमा शैलियों को ओवरराइड करने का वर्णन है।