2011-06-04 10 views
16

Neden olduğunu sorma, ancak TableLayoutPanel numaralı belgede belirli hücrelerin etrafına kenarlık çizme gereksinimim var.Bazı tabloların etrafındaki kenarlıkların kenarlıklarını çizme

Örneğin, basitlik için, 1 satır, 5 sütun TableLayoutPanel aldığımı varsayalım. Her bir hücrenin içinde bir düğme vardır. İlk 3 hücrenin etrafında bir kutu çizmek ve son 2 hücrenin etrafında bir kutu çizmek istiyorum. Yani toplam iki kutu.

Bunu nasıl gerçekleştireceğinize dair herhangi bir öneriniz var mı?

Teşekkürler.

+0

Neden? ....... :) – Nick

cevap

26

Sen CellPaint olayını kullanmak ve sınır dikdörtgen çizin olabilir gerektiğinde:

tableLayoutPanel1.CellPaint += tableLayoutPanel1_CellPaint; 

işleyicisi: Sen ControlPaint kullanarak sınırın her türlü çizebilirsiniz

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

:

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

Sadece ihtiyacım olan şey! Şerefe! –

+2

Bir yöntemle sınırlı olarak kullanabilir miyim? Örneğin, PaintDesiredCell (int columnOrder, int rowOrder) {// codes} gibi bir yöntem tanımlayacağım? Mümkün mü? –

+0

Hata ayıklama yaparken bunu kullanmayı seviyorum. IronPython ile nokta Net kullanarak, bir GUI oluşturucum yok, bu yüzden hataları görmeye çalışırken ızgarayı görebilmenin çok faydası var. Hücre boyası olay işleyicisini bağlayıp bağlamadığımı belirlemek için bir hata ayıklama anahtarı kullanıyorum. –

3

tableLayoutPanel ve Set t için erişim özellikleri o CellBorderStyle to Tek