在页面加载时停止触发事件

本文关键字:事件 加载 | 更新日期: 2023-09-27 18:33:29

我有一个带有IsChecked="true"属性和Checked事件的复选框:

<CheckBox Checked="myChBox_Checked" IsChecked="True" />

我不想在页面加载时触发Checked事件。因为我在方法中使用了其他控件,所以得到NullReferenceException

private void myChBox_Checked(object sender, RoutedEventArgs e) {
    myComboBox ... // NullReferenceException
}

我应该怎么做才能阻止启动触发?

在页面加载时停止触发事件

例如,您可以:

  • Page.Loaded 事件中订阅:

    this.Loaded += (sender, e) => myChBox.Checked += myChBox_Checked;
    
  • 或者更好的是检查您的活动以获取null

    private void myChBox_Checked(object sender, RoutedEventArgs e)
    {
         if (something == null) return;
         myComboBox ... // NullReferenceException
    }
    

您可以在事件处理程序中检查 null 引用,或者在事件处理程序Loaded页面中分配它:

public partial class MyPage : Page 
{
    public MyPage()
    {
        InitializeComponent();
        this.Loaded += page_Loaded;
    }
    private void page_Loaded(object sender, RoutedEventArgs e)
    {
        myChBox.Checked += myChBox_Checked;
    }
    private void myChBox_Checked(object sender, RoutedEventArgs e) 
    {
        if (myComboBox != null)
        {
           myComboBox ... // Should not be null, but check anyway
        }
    }

}