Нарисуйте линию на вкладке в C # - PullRequest
0 голосов
/ 10 октября 2011

У меня проблемы с рисованием линии на вкладке.

У меня на самом деле есть TabControl внутри TabControl. Я нарисовал несколько ярлыков, которые я использую в качестве ящиков. Я хочу нарисовать линии, чтобы соединить их вместе.

Я пробовал:

Pen P = new Pen(System.Drawing.Color.Black, 10);
tabname.CreateGraphics().DrawLine(P, 10, 10, 100, 100);

и

Pen P = new Pen(System.Drawing.Color.Black, 10);            
tabcontrolname.TabPages[0].CreateGraphics().DrawLine(P, 10, 10, 100, 100);

Ни одна из них не отображает строку. Я предполагаю, что линия находится где-то, так как нет ошибок.

Есть идеи, как заставить его отображаться на правильной вкладке?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 10 октября 2011

Возможно, вам нужно переопределить метод OnPaint (или обработать событие Paint), чтобы заставить его работать должным образом. Если вы этого не сделаете, ваши элементы управления просто будут рисовать над линиями.

Вот ссылка на соответствующие документы .

1 голос
/ 10 октября 2011

Где вы пробуете эти коды, в какой функции? Если вы делаете это один раз в процессе инициализации или построения, они не будут отображаться так, как вы ожидаете. Всякий раз, когда необходимо перерисовать элемент управления, вам также необходимо снова нарисовать эту линию. Либо переопределите метод OnPaint элемента управления, либо зарегистрируйте событие Paint и сделайте на нем рисование линий.

0 голосов
/ 11 октября 2011

Мне удалось заставить стрелку отображаться, используя следующий код:

TabPage.Paint += new PaintEventHandler(TabPage_Paint);

и

        protected void TabPage_Paint(object sender, PaintEventArgs e)
    {
        base.OnPaint(e);
        Pen arrow = new Pen(Brushes.Black, 4);
        arrow.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;

        e.Graphics.DrawLine(arrow, 10, 10, 100, 100);
        arrow.Dispose();
    }

Однако, когда прокрутка активирована, краска испортилась: (

...