События
От: Kuznero Россия  
Дата: 01.03.05 13:32
Оценка:
Привет всем!

Вопрос простой: как вызвать событие (raise event) из другого класса? Возможно ли это? Есть ли примеры?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: События
От: GarryIV  
Дата: 01.03.05 13:44
Оценка:
Hello, Kuznero!

K> Привет всем!


K> Вопрос простой: как вызвать событие (raise event) из другого класса?

K> Возможно ли это? Есть ли примеры?

Толко если создатель класса сделал такую возможность. Как например Button.PerfomClick()
Иначе можно попытаться через рефлекшн. Но это, мягко говоря, не очень хорошая идея.
Posted via RSDN NNTP Server 1.9
WBR, Igor Evgrafov
Re[2]: События
От: Kuznero Россия  
Дата: 01.03.05 13:57
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Hello, Kuznero!


K>> Привет всем!


K>> Вопрос простой: как вызвать событие (raise event) из другого класса?

K>> Возможно ли это? Есть ли примеры?

GIV>Толко если создатель класса сделал такую возможность. Как например Button.PerfomClick()

GIV>Иначе можно попытаться через рефлекшн. Но это, мягко говоря, не очень хорошая идея.

Я всё понимаю. Но создать обоих классов — я сам. Мне просто нужен пример реализации чего-то наподобии Button.PerformClick();

Дело в том, что у меня складывается следующая ситуация: когда событие вызывается из класса где это событие определено:

class Class1
{
    public event ExplorerTreeViewEventHandler FolderCreate;
    protected virtual void OnFolderCreate(ExplorerTreeNodeEventArgs e)
    {
        if (FolderCreate != null)
            FolderCreate(this, e);
    }
    
    private void SomethingToDo(...)
    {
        OnFolderCreate(new ExplorerTreeNodeEventArgs(Node));
    }
}

class Class2
{
    private Class1 m_Class1;
    
    public void SomethingToDo(...)
    {
        m_Class1.OnFolderCreate(new ExplorerTreeNodeEventArgs(Node));
    }
}


Так вот во втором классе происходит вызов рейзера события (OnFolderCreate) из первого класса (при этом m_Class1 конечно же проинициализирован). А штука вся в том, что когда вызов проходит из Class2, то Class1.FolderCreate == null....

Что делать?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[3]: События
От: ksg71 Германия  
Дата: 01.03.05 14:11
Оценка:
Здравствуйте, Kuznero, Вы писали:

K>Здравствуйте, GarryIV, Вы писали:


GIV>>Hello, Kuznero!


K>>> Привет всем!


K>>> Вопрос простой: как вызвать событие (raise event) из другого класса?

K>>> Возможно ли это? Есть ли примеры?

GIV>>Толко если создатель класса сделал такую возможность. Как например Button.PerfomClick()

GIV>>Иначе можно попытаться через рефлекшн. Но это, мягко говоря, не очень хорошая идея.

K>Я всё понимаю. Но создать обоих классов — я сам. Мне просто нужен пример реализации чего-то наподобии Button.PerformClick();


K>Дело в том, что у меня складывается следующая ситуация: когда событие вызывается из класса где это событие определено:


K>
K>class Class1
K>{
K>    public event ExplorerTreeViewEventHandler FolderCreate;
K>    protected virtual void OnFolderCreate(ExplorerTreeNodeEventArgs e)
K>    {
K>        if (FolderCreate != null)
K>            FolderCreate(this, e);
K>    }
    
K>    private void SomethingToDo(...)
K>    {
K>        OnFolderCreate(new ExplorerTreeNodeEventArgs(Node));
K>    }
K>}

K>class Class2
K>{
K>    private Class1 m_Class1;
    
K>    public void SomethingToDo(...)
K>    {
K>        m_Class1.OnFolderCreate(new ExplorerTreeNodeEventArgs(Node));
K>    }
K>}
K>


K>Так вот во втором классе происходит вызов рейзера события (OnFolderCreate) из первого класса (при этом m_Class1 конечно же проинициализирован). А штука вся в том, что когда вызов проходит из Class2, то Class1.FolderCreate == null....


K>Что делать?


подписаться на Class1.FolderCreate, если оно null — никто не подписался
Das Reich der Freiheit beginnt da, wo die Arbeit aufhört. (c) Karl Marx
Re[4]: События
От: Kuznero Россия  
Дата: 01.03.05 14:13
Оценка:
Спасибо.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.