1

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

像这样的东西。

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

2 回答 2

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 中完成。

于 2012-04-27T15:11:49.283 回答
1

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

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

在这些情况下,阅读 MSDN总是有帮助的。

于 2012-04-27T15:05:55.810 回答