如何让2个“Panel”对象同时滚动?

时间:2012-04-27 15:02:07

标签: c# .net panel

我在彼此相邻的表单上有2个Panel个对象。 当我滚动第一个面板时,我希望另一个滚动完全相同的数量。

像这样的东西。

private void Panel1_Scroll(object sender, ScrollEventArgs e)
{
    Panel2.ScrollPosition() = Panel1.ScrollPosition();
}

2 个答案:

答案 0 :(得分:7)

我同意scottm,但添加一些有所作为的东西:

private void ScorePanel_Scroll(object sender, ScrollEventArgs e)
{
    var senderPanel = sender as Panel;

    if (senderPanel == null)
    {
        // Might want to print to debug or mbox something, because this shouldn't happen.
        return;
    }

    var otherPanel = senderPanel == Panel1 ? Panel2 : Panel1;

    otherPanel.VerticalScroll.Value = senderPanel.VerticalScroll.Value;
}

另一方面,你总是将Panel1更新为Panel2的滚动偏移,所以如果你滚动Panel2,它实际上不会滚动任何东西。

现在您已经拥有了这个方法,您应该同时使用这两个面板进行订阅,如下所示:

Panel1.Scroll += ScorePanel_Scroll;
Panel2.Scroll += ScorePanel_Scroll;

这可能最好在包含面板的表格的ctor中完成。

答案 1 :(得分:1)

非常接近,这应该适合你:

private void ScorePanel_Scroll(object sender, ScrollEventArgs e)
{
    Panel1.VerticalScroll.Value = Panel2.VerticalScroll.Value;
}

Reading MSDN在这些情况下始终有所帮助。