0

我的程序中有 2 个滑块。我的第二个滑块永远不允许小于我的第一个滑块,因此如果有人试图将第二个滑块向下滑动超过第一个滑块,第一个滑块将始终等于第二个滑块。

我正在用 C# 编写代码,但我不明白为什么这段代码不起作用:

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

XAML - 编译器说的我的第二个滑块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 codeObject 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 回答