Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 24.07.2010, 10:19   #1
Casper-SC
Участник клуба
 
Регистрация: 04.07.2007
Адрес: Россия
Сообщений: 549
Репутация: 134

icq: 438116304
По умолчанию События в WPF. Обращение к компонентам формы из события

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

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

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

Код:

        public WindowAdd()
        {
            InitializeComponent();

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


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

Последний раз редактировалось Casper-SC; 24.07.2010 в 16:23.
Casper-SC вне форума   Ответить с цитированием
Старый 25.07.2010, 10:23   #2
dampirik
Участник клуба
 
Регистрация: 02.07.2009
Адрес: Москва
Сообщений: 719
Репутация: 125

icq: 301040873
По умолчанию

Ну если вообще идет речь о безсбойности программы... то почему бы и нет? ну можно также ( if(чтото == null) ... ну и тд проверять...)
Это во многих программах примерно так и реализованно... особенно сетевых...
для примера
try{подключение к серверу}
catch{не могу подключиться к серверу}
dampirik вне форума   Ответить с цитированием
Старый 25.07.2010, 16:45   #3
Casper-SC
Участник клуба
 
Регистрация: 04.07.2007
Адрес: Россия
Сообщений: 549
Репутация: 134

icq: 438116304
По умолчанию

Это всё я знаю. Просто в WinForms таких проблем не было. Как мне подсказали на другом форуме, это из-за очень большого числа компонентов на форме, так как они не успели ещё создаться, а событие для созданного уже компонента начинает отрабатывать, а в обработчике я обращаюсь к другому компоненту, который ещё не создан. Короче я решил эту проблему, просто в конструкторе подписываю контролы на события после InitializeComponent();

Последний раз редактировалось Casper-SC; 25.07.2010 в 22:11.
Casper-SC вне форума   Ответить с цитированием
Старый 25.07.2010, 19:03   #4
BOBAH13
Android Developer
Профессионал
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Адрес: Los Angeles, USA
Сообщений: 3,710
Репутация: 1457
По умолчанию

Пробуйте On Window Load событие, там все будет ок
__________________
Home | Android for food | XWindows Dock | github
BOBAH13 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов события из произвольного участка кода в WPF Casper-SC Общие вопросы .NET 1 24.07.2010 10:23
Synchronize() и события формы RusikOk Общие вопросы C/C++ 0 24.07.2010 08:52
События/Сообщения для формы в dll spamer Общие вопросы Delphi 10 01.02.2010 23:32
События формы Shouldercannon Общие вопросы Delphi 10 13.01.2009 02:32
Создание события формы, доступного в Disign-time Fausto Компоненты Delphi 4 06.06.2008 16:12


11:00.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru