0

スクロールバー付きの2つのパネルがあります。スクロール バーを 1 つだけ使用して、両方のパネルを同時にスクロールしようとしています。ただし、次のエラーが表示されます。

Value of '2268' is not valid for 'value'.'Value' should be between 'minimum' and maximum'
Parameter name: Value.

パネルの 1 つのスクロール イベントで、次のコードを使用しました。

     private void panel8_Scroll(object sender, ScrollEventArgs e)
        {
            panel8.HorizontalScroll.Maximum = panel7.HorizontalScroll.Maximum;
            panel7.HorizontalScroll.Value = panel8.HorizontalScroll.Value;
        }

パネル 7 と 8 の両方のスクロールを制御するには、panel8 のスクロールバーが必要です。

編集: panel8 の最大値は 13175 で、panel 7 の最大値は 2004 です。 panel8 の Horizo​​ntalScroll 値は 2268 です。 panel7 の Horizo​​ntalScroll 値は 2268 です。

4

1 に答える 1

1

パネル 7 をパネル 8 と同じ相対位置に配置したい場合は、次のようにします。

private void panel8_Scroll(object sender, ScrollEventArgs e)
{
    var p8Max = panel8.HorizontalScroll.MaxValue
    var p8Min = panel8.HorizontalScroll.MinValue
    var p7Max = panel7.HorizontalScroll.MaxValue
    var p7Min = panel7.HorizontalScroll.MinValue 
    var ratio = panel8.HorizontalScroll.Value/(p8Max-p8Min)
    var absoluteValue = ratio * (p7Max-p7Min)
    panel7.HorizontalScroll.Value = p7Min + absoluteValue
}
于 2013-05-22T06:27:09.023 に答える