System.NullReferenceException(单选按钮)

时间:2012-07-25 17:44:02

标签: c# exception radio-button

我有两个单选按钮,如果我将属性IsChecked放在XAML中,程序会因System.NullReferenceException崩溃。附加信息:对象引用未设置为对象的实例。

我的单选按钮:

<RadioButton IsChecked="True" Name="Mint" Checked="Mint_Checked_1"
  Foreground="Red"  FlowDirection="RightToLeft"  VerticalAlignment="Top"
  HorizontalAlignment="Right"  Margin="10,30,10,0" GroupName="Update_When"
  Content="A">
</RadioButton>

<RadioButton IsChecked="False" Name="Changet" Checked="Changet_Checked_1"
  FlowDirection="RightToLeft" VerticalAlignment="Top" HorizontalAlignment="Right"
  Margin="10,53,10,0" GroupName="Update_When" Content="B">
</RadioButton>

我的活动代码:

private void Mint_Checked_1(object sender, RoutedEventArgs e)
    {
        Mint.Foreground = Brushes.Red;
        Changet.Foreground = Brushes.Black;
    }

    private void Changet_Checked_1(object sender, RoutedEventArgs e)
    {
        Mint.Foreground = Brushes.Black;
        Changet.Foreground = Brushes.Red;
    }

2 个答案:

答案 0 :(得分:2)

您正在获取该异常,因为您在元素初始化之前调用了checked事件,解决此问题的一种方法是将IsChecked=True移动到Loaded事件:

private void MyWindow_Loaded (object sender, RoutedEventArgs e)
{
  Mint.IsChecked = true;
}

答案 1 :(得分:1)

这对我有用,我将要检查的RadioButton的xaml行移动到序列的最后一行,如下所示:

XAML文件中的原始顺序,(此顺序会导致抛出异常)

RadioButton x:Name="RadioButton1"
RadioButton x:Name="RadioButton2" // Radio button that is initialized as selected (Is_Checked)
RadioButton x:Name="RadioButton3"
RadioButton x:Name="RadioButton4"

没有例外:

RadioButton x:Name="RadioButton1"
RadioButton x:Name="RadioButton3"
RadioButton x:Name="RadioButton4"
RadioButton x:Name="RadioButton2" // Radio button that is initialized as selected (checked)

我相信这是因为当一个单选按钮变为&#34; Is_checked&#34; (即使在初始化时)它也会调用它绑定的RadioButton_IsChecked方法。

因此,在初始化RadioButton1初始化为false时,RadioButton2初始化为true,调用绑定方法,而RadioButton3和RadioButton4仍未初始化,并且为null,导致异常。

请注意,上述内容不会更改表单上单选按钮的位置。

另外,我已经将所有4个单选按钮绑定到同一个方法,并使用if / else if / else if / else在选中按钮时设置我想要的表单属性。