Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Tolias28
206 / 128 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
1

Почему если делегат события определен в другом классе, то не получается создать генерацию события?

01.08.2012, 01:05. Просмотров 1401. Ответов 7
Метки нет (Все метки)

В проекте №1 объявлен делегат для события:
C#
1
delegate void StateEventHandler(State state);
А в своем проекте №2 я в классе создаю событие с типом этого делегата:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Controller
{
    public event StateEventHandler StateChanged;
    
    //... other code
 
    private void SomeMethod()
    {
        state = бла бла бла;
        if(StateChanged != null)
            StateChanged(state);
    }
}
Так вот, среда ругается со следующей ошибкой:
The event 'TrafficController.Controller.StateChanged' can only appear on the left hand side of += or -= (except when used from within the type 'TrafficController.Controller')
Я не пойму, почему оно ругается, если как раз то исключение, что указанно в скобках, выполняется! Я написал этот код внутри класса, в котором это событие объявлено! Среда он сама говорит, что такое возможно только в середине типа 'TrafficController.Controller' и при этом же сама себе противоречит не позволяя этого сделать. Ничего не пойму...

Обнаружил, что все работает норм, если объявление делегата перенести в класс, в котором объявляется событие. Но стоит только перенести делегат туда, куда мне надо(в другой класс), как среда начинает ругаться... Почему?!?!?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2012, 01:05
Ответы с готовыми решениями:

Как создать метод с использованием объекта другого метода, который определен в другом классе
В общем суть вот в чем: У меня есть 2 класса. 1 основный(Program) в нем в методе Main создается...

Выполнение события в другом классе
Имеется два класса: Основной и GUI. В GUI я создал саму форму. Можно ли как-нибудь выполнить...

Обработка события формы в другом классе
я в C# совсем зелен, подскажите пожалуйста, как можно обработать событие формы в методе другого...

Как вызвать один обработчик события в другом обработчике события?
Здравствуйте. Подскажите пожалуйста, каким образом можно вызвать информацию из одного обработчика...

Для чего использовать ключевое слово event в объявлении события, если события — это те же самые делегаты
Господа, скажите пожалуйста, для чего использовать ключевое слово event в объявлении события, если...

7
Runa
133 / 85 / 22
Регистрация: 28.08.2009
Сообщений: 363
01.08.2012, 02:49 2
может быть
C#
1
public delegate void StateEventHandler(State state);
1
Tolias28
206 / 128 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
01.08.2012, 02:50  [ТС] 3
public пробовал выставлять. Ситуации не меняет
0
Runa
133 / 85 / 22
Регистрация: 28.08.2009
Сообщений: 363
01.08.2012, 02:54 4
а можно проект посмотреть?
1
Tolias28
206 / 128 / 8
Регистрация: 18.08.2010
Сообщений: 1,018
01.08.2012, 03:11  [ТС] 5
Цитата Сообщение от Runa Посмотреть сообщение
а можно проект посмотреть?
Проект немного большой... Потому создал новый проект и постарался в нем отобразить эту проблему, чтобы потом этот проект закинуть сюда, но как оказалось, проблемы этой уже нет, все благополучно компилируется и работает
Я действительно сам что-то напутал и не увидел. Короче надо уже ложиться спать

пардон
0
Runa
133 / 85 / 22
Регистрация: 28.08.2009
Сообщений: 363
01.08.2012, 03:13 6
Цитата Сообщение от Tolias28 Посмотреть сообщение
Короче надо уже ложиться спать
это правильно Утро вечера мудренее
0
Tolias28
01.08.2012, 06:30  [ТС]
  #7

Не по теме:

Цитата Сообщение от Runa Посмотреть сообщение
это правильно:) Утро вечера мудренее
У меня уже даже не вечер, а третий час ночи:D

0
turbanoff
Эксперт Java
4026 / 3761 / 743
Регистрация: 18.05.2010
Сообщений: 9,330
Записей в блоге: 11
Завершенные тесты: 1
01.08.2012, 06:54 8
Вы вызываете событие не в классе TrafficController.Controller, хотя убеждаете нас в обратном. А компилятор не обманешь.
0
01.08.2012, 06:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2012, 06:54

Как реализовать генерацию события в основном потоке?
Всем здравствуйте! У меня есть некий класс, в котором в отдельном потоке выполняется циклическая...

Создать разное количество потоков с возможностью ожидания события из одного потока в другом
Добрый день. Прошу подсказки в выборе высокоуровневых средств для работы с потоками. Мне нужно...

Как программно менять делегат события
Уважаемые господа программеры, хочу, чтобы по Click мышкой по форме включались разные его...


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

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

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