2011-06-04 8 views
16

में कुछ कक्षों के चारों ओर सीमाएं बनाएं, क्यों न पूछें कि मुझे TableLayoutPanel में कुछ कक्षों के आस-पास सीमा खींचने की आवश्यकता क्यों है।tablelayoutpanel

उदाहरण के लिए, सादगी के लिए, मान लें कि मेरे पास 1 पंक्ति, 5 कॉलम TableLayoutPanel है। प्रत्येक सेल में एक बटन है। मैं पहले 3 कोशिकाओं के चारों ओर एक बॉक्स खींचना चाहता हूं और फिर अंतिम 2 कोशिकाओं के चारों ओर एक और बॉक्स बनाना चाहता हूं। तो कुल दो बक्से।

इसे पूरा करने के तरीके पर कोई सुझाव?

धन्यवाद।

+0

क्यों? ....... :) – Nick

उत्तर

26

आप CellPaint घटना का उपयोग करें और सीमा आयत सके जब:

tableLayoutPanel1.CellPaint += tableLayoutPanel1_CellPaint; 

हैंडलर:

void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e) 
{ 
    if (e.Column == 1 && e.Row == 0) 
     e.Graphics.DrawRectangle(new Pen(Color.Blue), e.CellBounds); 
} 

आप ControlPaint का उपयोग कर सीमा के किसी भी प्रकार आकर्षित कर सकते हैं:

if (e.Column == 1 && e.Row == 0) 
{ 
    var rectangle = e.CellBounds; 
    rectangle.Inflate(-1, -1); 

    ControlPaint.DrawBorder3D(e.Graphics, rectangle, Border3DStyle.Raised, Border3DSide.All); // 3D border 
    ControlPaint.DrawBorder(e.Graphics, rectangle, Color.Red, ButtonBorderStyle.Dotted); // dotted border 
} 
+0

बस मुझे क्या चाहिए! चीयर्स! –

+2

क्या मैं इसे किसी विधि से बाध्य करने में सक्षम हूं? उदाहरण के लिए, मैं PaintDesiredCell (int columnOrder, int rowOrder) {// code} जैसी विधि को परिभाषित करूंगा? क्या यह संभव है? –

+0

मुझे डिबगिंग के दौरान इसका उपयोग करना पसंद है। आयरनपीथन के साथ डॉट नेट का उपयोग करके, मेरे पास एक जीयूआई बिल्डर नहीं है, इसलिए त्रुटियों को खोजने का प्रयास करते समय ग्रिड देखने में सक्षम होने में बहुत मदद मिलती है। मैं यह निर्धारित करने के लिए एक डीबग स्विच का उपयोग करता हूं कि क्या मैं सेल पेंट इवेंट हैंडलर को हुकअप करता हूं। –

3

तालिका के लिए एक्सेस गुण LayoutPanel और सेट टी वह सेलबॉर्डर स्टाइल सिंगल

संबंधित मुद्दे