c# - 如何让 2 个 `Panel` 对象同时滚动?

标签 c# .net panel

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

是这样的。

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

最佳答案

我同意 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;

这可能最好在包含面板的表单的构造函数中完成。

关于c# - 如何让 2 个 `Panel` 对象同时滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353041/

相关文章:

c# - 如何通过调用 XmlSerializer.Serialize 创建 XmlNode?

c# - 循环遍历文本框

java - GWT:可以画圆形面板吗?

java - 多个 Canvas 彼此相邻

c# - 理解枚举——用作常量

c# - SSIS - PipelineComponent 中的 ProcessInput 被多次调用

C#:具有复杂条件的 Debug.Assert()

javascript - 可折叠面板不展开

c# - 无需使用 Visual Studio 2010 中的设计模式即可找到事件的正确参数

c# - 正则表达式未使用 Unicode 字符范围