Event richtig aufrufen

  • C#

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von SpaceyX.

    Event richtig aufrufen

    Hi Leute,

    ich habe eine Frage und zwar habe ich ein Panel welches auch ein Label enthält. Jetzt möchte ich bei einem klick auf das Panel und label etwas machen. Wie kann ich das bereits fertiggestellte Event jetzt beim Label_Mouseclick ebenso aufrufen damit ich die Methode nicht zwei mal schreiben muss? Vllt versteht ihr es wenn ihr den code seht :D

    VB.NET-Quellcode

    1. void panelTeam_MouseClick(object sender, MouseEventArgs e)
    2. {
    3. try
    4. {
    5. // Panel wurde gedrückt
    6. Panel pan = (Panel)sender;
    7. metroTabMain.SelectedTab = tabTeams;
    8. comboTeams.SelectedItem = pan.Tag.ToString();
    9. }
    10. catch
    11. {
    12. // Label wurde gedrückt
    13. Label pan = (Label)sender;
    14. metroTabMain.SelectedTab = tabTeams;
    15. comboTeams.SelectedItem = pan.Text;
    16. }
    17. }
    18. void lblTeamname_MouseClick(object sender, MouseEventArgs e)
    19. {
    20. panelTeam_MouseClick(sender, e);
    21. }


    Kann man das so machen? Ist es iwie möglich das Try-Catch noch wegzubekommen, damit es sauberer wird?

    Danke euch.
    Hey,

    Du musst den EventHandler auf die gleiche Methode zeigen lassen. Dies kannst Du in der FormX.Designer.cs erledigen:



    Eine Fallunterscheidung kannst Du so durchführen. Der Try-Block ist mehr als überflüssig:

    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    Eine Fallunterscheidung kannst Du so durchführen.

    oder so:

    C#-Quellcode

    1. Panel panel = sender as Panel;
    2. if (panel != null) { ... }
    3. Label label = sender as Label;
    4. if (label != null) { ... }
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Oder so:

    C#-Quellcode

    1. private void panel1AndLabel1_Click(object sender, EventArgs e)
    2. {
    3. if (sender == panel1) this.Text = "panel";
    4. if (sender == label1) this.Text = "label";
    5. }


    Ist zwar das selbe, nur kürzer. Eine Prüfung auf NULL ist doch nicht nötig.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    Eine Prüfung auf NULL ist doch nicht nötig.

    Bei deinem Beispiel nicht, bei meinem schon.
    Du testest ja auch nur, ob der sender von einem bestimmten Typ ist. Mein Beispiel macht aus dem sender direkt das passende Label oder Panel um auf dessen Eigenschaften zugreifen zu können.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Ah, richtig. Das wär aber ja noch unflexibler, weil du dann auf diese speziellen Panels und Labels festgelegt bist und für jedes weitere Panel oder Label das du in deine Form einbaust den Code anpassen musst. Der Code des OP sieht mir aber mehr danach aus, als habe er auch mehrere Panels und Labels die er mit dem Event abhandelt ;)
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    Will ich allgemein prüfen, welcher Typ drin steckt =>

    C#-Quellcode

    1. private void panel1AndLabel1_Click(object sender, EventArgs e)
    2. {
    3. if (sender is Label) this.Text = "Label";
    4. if (sender is Panel) this.Text = "Panel";
    5. }


    Ich hab die Frage aber anders verstanden.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o