2011-06-04 6 views
16

Ne demandez pas pourquoi mais j'ai l'obligation de dessiner une bordure autour de certaines cellules TableLayoutPanel. Par exemple, pour simplifier, disons que j'ai 1 ligne, 5 colonnes TableLayoutPanel. Chaque cellule a un bouton dedans. Je voudrais dessiner une boîte autour des 3 premières cellules puis une autre autour des 2 dernières cellules. Donc, deux boîtes au total.Dessiner des bordures autour de certaines cellules dans un tablelayoutpanel

Des suggestions sur la façon d'accomplir cela?

Merci.

+0

Pourquoi? ....... :) – Nick

Répondre

26

Vous pouvez utiliser l'événement CellPaint et dessiner le rectangle frontière en cas de besoin:

tableLayoutPanel1.CellPaint += tableLayoutPanel1_CellPaint; 

Le gestionnaire:

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

Vous pouvez dessiner une sorte de frontière en utilisant 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

Juste ce dont j'avais besoin! À votre santé! –

+2

Puis-je être en mesure de l'utiliser lié à une méthode? Par exemple, je vais définir une méthode comme PaintDesiredCell (int columnOrder, int rowOrder) {// codes}? C'est possible? –

+0

J'aime utiliser ceci lors du débogage. En utilisant dot net avec IronPython, je n'ai pas de générateur d'interface graphique, donc être capable de voir la grille aide beaucoup quand j'essaie de trouver des erreurs. J'utilise un commutateur de débogage pour déterminer si je raccorde le gestionnaire d'événements de peinture de cellule. –

3

Propriétés d'accès pour le tableLayoutPanel et Set t e CellBorderStyle to Single

Questions connexes