Привет всем!
Вопрос простой: как вызвать событие (raise event) из другого класса? Возможно ли это? Есть ли примеры?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Hello, Kuznero!
K> Привет всем!
K> Вопрос простой: как вызвать событие (raise event) из другого класса?
K> Возможно ли это? Есть ли примеры?
Толко если создатель класса сделал такую возможность. Как например Button.PerfomClick()
Иначе можно попытаться через рефлекшн. Но это, мягко говоря, не очень хорошая идея.
Posted via RSDN NNTP Server 1.9
Здравствуйте, 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>>
Здравствуйте, 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
Спасибо.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>