2009-03-28 3 views
1

Есть ли способ в WinForms эмулировать пограничный сбой CSS?«Collapse» Панели управления панелями для WinForms

Представьте себе: у вас есть панель управления с рамкой FixedSingle, дающая ей 1px черную рамку, прикрепленную к верхней части формы. Вы добавляете второй элемент управления Panel с той же границей, а также прикрепляетесь к вершине, фактически ставя эту панель под первой панелью. Проблема заключается в том, что нижняя часть верхней панели касается верхней части нижней панели, граница теперь имеет ширину 2 пикселя (нижняя часть верхней панели (1px) + верхняя часть нижней панели (1px) = 2px).

Я уже возился с свойствами управления Panel, но я не мог видеть ничего, чтобы эти касательные края перекрывались, поэтому между панелями имеется только 1px границы. У кого-нибудь есть идеи?

(Я использую Visual Basic .NET 2008)

ответ

1

Просто создайте свой собственный элемент управления с панели. Подделайте границу, рисуя ее так, как хотите. Например:

using System; 
using System.Drawing; 
using System.Windows.Forms; 

public class MyPanel : Panel { 
    public MyPanel() { 
    this.Dock = DockStyle.Top; 
    this.DoubleBuffered = true; 
    this.SetStyle(ControlStyles.ResizeRedraw, true); 
    } 
    protected override void OnPaintBackground(PaintEventArgs e) { 
    base.OnPaintBackground(e); 
    int y = this.ClientSize.Height - 1; 
    int x = this.ClientSize.Width-1; 
    e.Graphics.DrawLine(Pens.Black, 0, 0, 0, y); 
    e.Graphics.DrawLine(Pens.Black, 0, y, x, y); 
    e.Graphics.DrawLine(Pens.Black, x, 0, x, y); 
    } 
} 

Добавить новый класс в ваш проект и вставить код, показанный выше. Компиляция. Отбросьте новый элемент управления сверху панели инструментов на свою форму.

+0

Я собираюсь попробовать это в понедельник. Благодаря! – HardCode

0

Как и большинство встроенных элементов управления, границы собственности Группы является все-или-ничего вида собственности. Было бы удобно указать, какие стороны панели получают границы, но, увы, нет. Если ваша цель состоит в том, чтобы создать представление в виде сетки с несколькими ячейками, вам может быть лучше рисовать данные (и связанные линии сетки) в одну панель самостоятельно.

Смежные вопросы