2010-03-29 33 views
0

是的,所以我有2个面板具有相同的宽度和相同宽度的数据。顶部面板启用了自动滚动功能。我希望能够使用顶部面板滚动条滚动这两个面板。这意味着底部面板没有滚动条。我会怎么做?同时滚动两个面板c#winForms

alt text 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); 

的矩形没有动静。 我在做什么错?

回答

3

简单易行。实现第一个面板的Scroll事件并使其失效()第二个。在第二个面板的Paint事件中使用第一个滚动位置绘制文本:

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

嗯,你会知道另一种技术,因为我不会在第二个面板中存储一个标签。我想存储图形或东西 – jello 2010-03-29 22:40:39

+0

绘制的图形可以用相同的方式抵消,使用e.Graphics.TranslateTransform()。你可以设置panel2的AutoScrollPosition。很多选择。 – 2010-03-29 23:41:39

+0

嗯我试图找到关于e.Graphics.TransateTransform()的文档,但并没有真正理解它是什么,或看到我正在尝试做的关系。 – jello 2010-03-30 00:33:42

0

更简单。

只需将面板放置在具有滚动条的另一个面板(AutoScroll = true)内。 我使用过这个策略。