Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
superkachok
0 / 0 / 1
Регистрация: 04.04.2016
Сообщений: 31
1

"Ссылка на объект не указывает на экземпляр объекта" при генерации события

30.05.2017, 17:50. Просмотров 379. Ответов 6
Метки нет (Все метки)

Здравствуйте, не понимаю почему возникает экспешн. В других классах всё работает нормально, а в том классе где форма нет.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public partial class ChatForm : Form
    {
        public event Action<ChatFormArgs> SendMessage;
        public string[] myAr;
        public ChatForm()
        {
            InitializeComponent();
            SendMessage.Invoke(new ChatFormArgs("asd"));
        }
 
    }
 
    public class ChatFormArgs : EventArgs
    {
        public string Message { get; set; }
        public ChatFormArgs(string message)
        {
            Message = message;
        }
    }


Ну и сам эксепшн(возникает на 8 строчке):
Кликните здесь для просмотра всего текста
Ссылка на объект не указывает на экземпляр объекта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2017, 17:50
Ответы с готовыми решениями:

Ошибка "ссылка на объект не указывает на экземпляр объекта" при разборе Json
Столкнулся с такой ошибкой компилятора: ссылка на объект не указывает на...

System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
using System; using System.Collections.Generic; using System.ComponentModel;...

Ошибка "Ссылка на объект не указывает на экземпляр объекта"
Ссылка на объект не указывает на экземпляр объекта. Вот код: using System;...

Ошибка "Ссылка на объект не указывает на экземпляр объекта"
После нажатия на кнопку авторизации: Открывается форма тестирования и...

Ошибка "Ссылка на объект не указывает на экземпляр объекта"
Здравствуйте, ув. форумчане! Недавно начал заниматься C# и вообще c ООП....

6
OwenGlendower
Супер-модератор
Эксперт .NET
9323 / 8182 / 3491
Регистрация: 17.03.2014
Сообщений: 16,248
Записей в блоге: 1
30.05.2017, 17:59 2
superkachok, исключение NullReferenceExcdption генерируется когда переменная ссылочного типа имеет значение null. В данном случае похоже таковым является событие SendMessage. Нужно убрать генерацию события из конструктора класса. Это не имеет никакого смысла т.к. пока обьект не создан внешний код не может подписаться на событие и поэтому оно всегда будет равно null.

Добавлено через 1 минуту
И перед генерацией события нужно проверять есть ли подписчики
C#
1
2
3
4
5
// Так
if (SendMessage != null) SendMessage(new ChatFormArgs("asd"));
 
// Или так
SendMessage.?Invoke(new ChatFormArgs("asd"));
0
superkachok
0 / 0 / 1
Регистрация: 04.04.2016
Сообщений: 31
30.05.2017, 18:06  [ТС] 3
Дело в том что эксепшн возникает не только в конструкторе, я его туда поместил чтобы сразу видеть его.

Добавлено через 4 минуты
А если подписчик находится в другом классе. Как сделать правильно?
Просто есть другой класс не форма, и в нём всё нормально работает по такой схеме.
0
OwenGlendower
Супер-модератор
Эксперт .NET
9323 / 8182 / 3491
Регистрация: 17.03.2014
Сообщений: 16,248
Записей в блоге: 1
30.05.2017, 18:08 4
superkachok, вопрос неясен. Подписчик события в 99.9% находится в другом классе.
0
superkachok
0 / 0 / 1
Регистрация: 04.04.2016
Сообщений: 31
30.05.2017, 18:12  [ТС] 5
В проекте есть много классов, в основном события созданы в классах не относящихся к формам. Мне потребовалось создать обработчик события в форме. Далее возник приведённый выше экспшн. Почему возникает только в классе формы и не мозникает в других классах мне не ясно, если переместить обработчик события из конструктора, то ничего не меняется.
0
OwenGlendower
Супер-модератор
Эксперт .NET
9323 / 8182 / 3491
Регистрация: 17.03.2014
Сообщений: 16,248
Записей в блоге: 1
30.05.2017, 18:14 6
superkachok, значит у события нет подписчиков. Чтобы понять почему нужно видеть весь код.
0
superkachok
0 / 0 / 1
Регистрация: 04.04.2016
Сообщений: 31
30.05.2017, 19:30  [ТС] 7
Окей, будем искать.

Добавлено через 1 час 11 минут
Проблему решил, уйдя от нее . Создал в своём классе евент и его хендлер. Из класса формы работал только с ними, но не создавал в самой форме обработчика и события.
Сабж всё же я не смог решить или как-то себе объяснить, у кого будет подобная проблема можете написать в пм.
0
30.05.2017, 19:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2017, 19:30

Ошибка "Ссылка на объект не указывает на экземпляр объекта."
написал проект на c# компилируется без ошибок но при нажатии начать выбивает...

Не открывается фома конструктора "Ссылка на объект не указывает на экземпляр объекта."
открываю проект, нажимаю shift+f7 и выдает ошибку : Показать информацию по...

Динамическое создание Лейблов ("Ссылка на объект не указывает на экземпляр объекта")
Доброго времени суток! Я хочу что бы при вводе переменной &quot;i&quot; на на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru