прокрутка двух панелей одновременно c # winForms - PullRequest
0 голосов
/ 30 марта 2010

да, у меня есть 2 панели с одинаковой шириной и одинаковой шириной данных. на верхней панели включена автопрокрутка. Я хотел бы иметь возможность прокручивать обе панели с помощью полосы прокрутки верхней панели. Это означает, что на нижней панели нет полосы прокрутки. Как бы я это сделал?

альтернативный текст http://members.multimania.co.uk/jeff1524/pics/scrolling.jpg

РЕДАКТИРОВАТЬ: я пытался panel2.AutoScrollPosition = panel1.AutoScrollPosition; нет ничего

Я тоже пробовал

e.Graphics.DrawRectangle(new Pen(Color.Pink,3), 10, 10, 30, 20);
        e.Graphics.TranslateTransform(panel1.AutoScrollPosition.X, 0);

нет движения по прямоугольнику. Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 30 марта 2010

Легко, peasy. Реализуйте событие Scroll для 1-й панели и сделайте его Invalidate () 2-м. Нарисуйте текст в событии Paint 2-й панели, используя позицию прокрутки 1-го:

    private void panel1_Scroll(object sender, ScrollEventArgs e) {
        panel2.Invalidate();
    }

    private void panel2_Paint(object sender, PaintEventArgs e) {
        Point pos = new Point(panel1.AutoScrollPosition.X, 0);
        TextRenderer.DrawText(e.Graphics, "nobugz waz here", panel2.Font, pos, Color.Black);
        // Draw something
        e.Graphics.TranslateTransform(pos.X, pos.Y);
        e.Graphics.DrawLine(Pens.Black, 0, 0, 100, 100);
    }
0 голосов
/ 28 апреля 2011

Еще проще.

Просто поместите панели внутри другой панели с полосой прокрутки (AutoScroll = true). Я использовал эту стратегию.

...