7 Stimmen

UserControl Load-Ereignis wird nicht ausgelöst

Ich habe eine WinForms-Anwendung. Meine Form abgeleitete Klasse hat UserControl abgeleitete Klasse. Ich habe einfach mehrere Steuerelemente in einem UserControl zusammengefasst, um die Wiederverwendung zu vereinfachen. Die Load Veranstaltung von UserControl nicht abgefeuert wird. Muss ich eine Eigenschaft festlegen?

15voto

Ash Punkte 58914

Versuchen Sie das Überschreiben der OnLoad()-Methode in Ihrem UserControl. Von MSDN:

Die OnLoad-Methode ermöglicht auch abgeleitete Klassen, das Ereignis zu behandeln, ohne einen Delegaten anzuhängen. Dies ist die bevorzugte Technik für die Behandlung des Ereignis in einer abgeleiteten Klasse.

protected override void OnLoad(EventArgs e)
{
    //Your code to run on load goes here 

    // Call the base class OnLoad to ensure any delegate event handlers are still callled
   base.OnLoad(e);
}

3voto

IAbstract Punkte 19409

Es gäbe keine besonderen Eigenschaften, die Sie für die Auslösung von UserControl-Ereignissen festlegen müssten. Sie haben eine von 2 Möglichkeiten, das Ereignis zu abonnieren. Wählen Sie in den Eigenschaften (Property Grid) die Ereignisliste aus...Doppelklicken Sie auf die Eigenschaft Load. Alle erforderlichen Codeteile werden eingefügt, und Ihr Cursor wartet bei der richtigen Methode auf Sie.

Die zweite Methode ist das Abonnieren des Ereignisses wie folgt:

public MyMainForm( )
{
    InitializeComponents();
    myUserControl.Load += new System.EventHandler(myUserControl_Load);
}

void myUserControl_Load(object sender, EventArgs e)
{
    MessageBox.Show(((UserControl)sender).Name + " is loaded.");
}

1voto

Filip Punkte 2167

Ein Grund dafür, dass das Load-Ereignis nicht mehr ausgelöst wird, ist, wenn Sie ein übergeordnetes Steuerelement haben, das etwas wie das folgende tut

    protected override void OnLoad(EventArgs e)
    {
     //do something
    }

Sie müssen immer darauf achten, dies zu tun

    protected override void OnLoad(EventArgs e)
    {
     //do something
     base.OnLoad(e);
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X