0

プログラムに 2 つのスライダーがあります。2 番目のスライダーを最初のスライダーよりも小さくすることはできないため、誰かが 2 番目のスライダーを最初のスライダーを超えて下にスライドさせようとすると、最初のスライダーは常に 2 番目のスライダーと等しくなります。

これを C# でコーディングしていますが、このコードが機能しない理由がわかりません。

//SLIDER 1
        private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            if (slider2.Value <= slider1.Value)
                slider1.Value = slider2.Value;
        }

XAML - コンパイラが言う私の 2 番目のスライダーはnull実行時です。

<Slider Height="22" Margin="128,45,130,0" Name="slider2" VerticalAlignment="Top" Maximum="160" Minimum="1" TickFrequency="1" TickPlacement="BottomRight" Value="50" IsSnapToTickEnabled="True" ValueChanged="slider2_ValueChanged" />

コンパイラはNullReferenceException was unhandled by user code,と言いObject reference not set to an instance of an objectます。これを機能させるにはどうすればよいですか?

ありがとう。

4

2 に答える 2

1

さあ、これは簡単です。プログラミングの基礎... O_o

使用する前に、両方のコントロールを確認nullしてください。

private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    if (slider1 == null || slider2 == null)
        return;

    if (slider2.Value <= slider1.Value)
        slider1.Value = slider2.Value;
}
于 2013-07-18T13:25:00.683 に答える
1

この問題が発生しているのは、ページが初期化され、XAML コントロールがレンダリングを開始したときにslider1_ValueChanged、値を に設定しているため が呼び出されて30いますslider2が、まだ初期化されていないためです。
そのため、エラーが発生しています。

于 2013-07-18T13:26:22.243 に答える