3 votes

Les événements ne se produisent qu'après la construction ?

J'essaie de comprendre pourquoi je ne peux pas inviter l'événement dans la dernière ligne du constructeur ? Est-ce que l'événement "formload" se produit après la fin de la construction ?

public Form1()
    {
        InitializeComponent();
        button1.Text = "a";
        button1.PerformClick();
    }

private void button1_Click(object sender, EventArgs e)
    {
        button1.Text = "b";
    }

2voto

Aghilas Yakoub Points 16682

Ce comportement est dû au fait que les contrôles sont construits sur les messages Windows, ce qui ne fonctionne que si l'instance du formulaire existe et possède une poignée, ce qui n'est pas le cas lorsqu'elle est encore construite.

Le formulaire doit être ouvert pour s'assurer que les contrôles fonctionnent correctement.

Et ce n'est pas une bonne pratique de lever un événement sur votre constructeur.

0voto

Blam Points 17325

Testé. Ne dépend pas du contrôle créé.

public Form1()
{
    InitializeComponent();
    button1.Text = "A";
    button1_Click_helper();
}

private void button1_Click(object sender, EventArgs e)
{
    button1_Click_helper();
}

private void button1_Click_helper()
{
    button1.Text = "B";
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X