Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > События в WPF.


Автор: CasperSC 24.7.2010, 09:18
Здравствуйте. Есть такой вопрос - Почему в WPF, если я создал событие стандартным способом (в окне свойств щелчок по вкладке "События" и двойной клик по пустому полю напротив названия нужного события), то во время запуска приложения вылетает ошибка, она вылетает в том случае, если я в событии обращаюсь к какому либо компоненту расположенному в окне. 

Ошибка:
System.NullReferenceException не обработано пользовательским кодом
  Message=Ссылка на объект не указывает на экземпляр объекта.

Из-за этого приходиться подписывать контролы в находящиеся окне на обработчики событий в конструкторе окна.
Код

        public WindowAdd()
        {
            InitializeComponent();

            //Подписываем здесь, так как выпала ошибка, так как срабатывало событие раньше, 
            //чем инициализировались изменяемые элементы в обработчике этих событий
            this.chBoxPlayMusic.Checked += new RoutedEventHandler(ChangeEnabledControls);
            this.chBoxPlayMusic.Unchecked += new RoutedEventHandler(ChangeEnabledControls);
        }


Ну как-то же это решается? Не ставить же теперь в каждое событие try {}  catch(Exception exc) {}

Автор: Kefir 3.8.2010, 20:01
Такой проблемы в WPF нет и подписываться упомянутым стандартным способом можно и работать они будут. Но я так понимаю, что неким образом эти эвенты начинают у вас стрелять до выхода окна из InitializeComponent(), что и приводит к нулям.

Если можно - приведите пожалуйста код обработчика который так вываливается и XAML того контрола, который рождает эвент.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)