Pergunta : Controle feito sob encomenda que comunica um evento para parent o formulário

Eu codifiquei o UI para um controle (classe baixa: UserControl) e precisa agora de comunicar um evento ao formulário do pai.  Obviamente porque o controle poderia ser usado em formulários diferentes eu não posso saber adiantado o nome do formulário - tão como eu gero algum evento (ou mensagem), passo este ao pai e mando o pai responder a este?


(em C++ eu apenas criaria minha própria mensagem e usaria PostMessage para se comunicar com uma janela do pai)
class= do

Resposta : Controle feito sob encomenda que comunica um evento para parent o formulário

Você precisa de definir seu próprio evento e de mandar o formulário do pai subscrever-lhe. Exemplo simples using EventHandler padrão (você precisará de definir sua própria classe do delegado/eventargs se você quer passar a informação feita sob encomenda com seu evento):
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
controle do usuário de //
    classe parcial pública MyUserControl: UserControl
    {
        evento público EventHandler SomethingHappened;

        MyUserControl público ()
        {
            InitializeComponent ();
        }

        vácuo confidencial button1_Click (remetente do objeto, EventArgs e)
        {
            OnSomethingHappened ();
        }

        OnSomethingHappened vago protegido ()
        {
            se (SomethingHappened! = zero)
                SomethingHappened (este, EventArgs novo ());
        }
    }


'/formulário do pai
vácuo confidencial Form1_Load (remetente do objeto, EventArgs e)
{
    myUserControl1.SomethingHappened += EventHandler novo (myUserControl1_SomethingHappened);
}

myUserControl1_SomethingHappened vago (remetente do objeto, EventArgs e)
{
    MessageBox.Show (“algo aconteceu”);
}
Outras soluções  
 
programming4us programming4us