Вызов события из внутреннего класса для обработки во внешнем классе. Как это сделать? - PullRequest
1 голос
/ 23 июня 2010

У меня есть класс A, B

    class A
    {
        public class B
        {
            public event EventHandler handleClick;
            public void eventraising(object sender, EventArgs e)
            {
                if (handleClick != null)
                    handleClick(this, e);
            }
        }

        //handle raised event here
    }

Как я могу это сделать

Ответы [ 2 ]

2 голосов
/ 23 июня 2010

Классу A понадобится экземпляр B где-то первым. Вложение классов в .NET - это просто способ организации типов. Это не подразумевает владения экземпляром.

Так что вам нужно сделать что-то вроде:

class A
{

    private B instanceOfB;

    // constructor
    public A() {
        instanceOfB = new B();
        instanceOfB.handleClick += instanceOfB_handleClick;
    }

    // event handler
    private void instanceOfB_handleClick(object sender, EventArgs e) {
        // blah
    }

    public class B
    {
        public event EventHandler handleClick;
        public void eventraising(object sender, EventArgs e)
        {
            if (handleClick != null)
                handleClick(this, e);
        }
    }

}

Кроме того, ваше событие должно называться Click, а не handleClick.

0 голосов
/ 23 июня 2010

Вам нужен экземпляр B в A.

class A
{
    B b = new B;

    A()
    {
        b.handleClick += (sender, ev) => { ... }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...