C# 如何使2个“面板”对象同时滚动?
我有两个C# 如何使2个“面板”对象同时滚动?,c#,.net,panel,C#,.net,Panel,我有两个面板对象在一个表单上,彼此相邻。 当我滚动第一个面板时,我希望另一个面板的滚动量完全相同 像这样的 private void Panel1_Scroll(object sender, ScrollEventArgs e) { Panel2.ScrollPosition() = Panel1.ScrollPosition(); } 非常接近,这应该适合您: private void ScorePanel_Scroll(object sender, ScrollEventArgs
面板
对象在一个表单上,彼此相邻。
当我滚动第一个面板时,我希望另一个面板的滚动量完全相同
像这样的
private void Panel1_Scroll(object sender, ScrollEventArgs e)
{
Panel2.ScrollPosition() = Panel1.ScrollPosition();
}
非常接近,这应该适合您:
private void ScorePanel_Scroll(object sender, ScrollEventArgs e)
{
Panel1.VerticalScroll.Value = Panel2.VerticalScroll.Value;
}
在这些情况下总是有帮助的。非常接近,这应该适合您:
private void ScorePanel_Scroll(object sender, ScrollEventArgs e)
{
Panel1.VerticalScroll.Value = Panel2.VerticalScroll.Value;
}
在这些情况下总是有帮助的。我同意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中完成。我同意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中完成。谢谢scottm,唯一的问题是我向下滚动了一点,但是我得到了一个超出范围的异常。尽管两个面板具有相同的数据对象them@theIrishUser,面板大小是否相同?您可能需要添加一些验证,以检查当前值是否在第二个面板的范围内>0。它们的大小相同,我在初始化它们时通过代码设置了最大大小,从而解决了这个问题。现在我的问题是它们并不总是保持同步。(如果我快速移动鼠标)谢谢scottm,唯一的问题是我向下滚动了一点,但是我得到了一个超出范围的异常。尽管两个面板具有相同的数据对象them@theIrishUser,面板大小是否相同?您可能需要添加一些验证,以检查当前值是否在第二个面板的范围内>0。它们的大小相同,我在初始化它们时通过代码设置了最大大小,从而解决了这个问题。现在我的问题是它们并不总是保持同步。(如果我快速移动鼠标)如何订阅两个面板?示例代码?多谢各位appreciated@theIrishUser在答案末尾添加了滚动事件订阅示例。如何订阅这两个面板?示例代码?多谢各位appreciated@theIrishUser在答案末尾添加了滚动事件订阅示例。