Control per name zugreifen..!



  • Hallo Forum.

    Folgendes Szenario: Habe ein Button namens "bt_a" und ein button namens "bt_b". Wenn der Nutzer auf einen dieser Buttons klickt, will ich den namen des buttons rausfinden und wenn ich den namen rausgefunden hab, will ich eine bestimmte eigenschaft des buttons verändern.

    Zum Beispiel finde ich den namen raus und speichere ich ihn in ein string..

    string name_button = ... ; // hier soll der name gespeichert werden
    name_button.Location.X = ...; // weiss, das ist falsch...will nur damit andeuten, dass ich somit auf mein button zugreifen soll
    

    Wie geht das..?



  • Doppelklick im GUI-Designer ... dann hast Du genau die Methode / das Event was ausgelöst wird, wenn der Button geklick wird



  • mogel schrieb:

    Doppelklick im GUI-Designer ... dann hast Du genau die Methode / das Event was ausgelöst wird, wenn der Button geklick wird

    Ja, das ist mir schon klar...nur bringt es mir grad nicht viel bei meinem problem, da ich richtig viele buttons habe und alle fast die gleiche funktion haben sollen beim onClick_event mit dem kleinen Unterschied, dass diese Funktion für jeden Button sich ein bischen verändert.
    Also habe ich mir überlegt mit ein paar if abzufragen, was das für ein button ist und so die jeweiligen Befehle beim if zu schreiben. Deshalb will ich ja den namen des Buttons erst herausfinden, damit ich danach mit dem weiterarbeiten kann.

    Ich hoffe ich bin jetzt verständlich geworden.!

    Eine 2. Lösung wäre die gleiche Funktion im event jedes Buttons zu schreiben und jedes Mal an der entsprechende Stelle den Code zu verändern. Aber ich dachte es geht auch einfacher, deshalb der ganze Aufwand.



  • Beim Aufruf des Delegates bekommst du als erstes Argument IMMER den Button, der den Click ausgelöst hat. Also so:

    void Button_Click(object sender, EventArgs e)
    {
      Button button = sender as Button;
    
      if(button == null)
        return;
    
      if(button.Name == "...")
      ....
    }
    


  • O.o schrieb:

    Beim Aufruf des Delegates bekommst du als erstes Argument IMMER den Button, der den Click ausgelöst hat. Also so:

    void Button_Click(object sender, EventArgs e)
    {
      Button button = sender as Button;
    
      if(button == null)
        return;
    
      if(button.Name == "...")
      ....
    }
    

    Danke, genau das habe ich gewollt..!



  • Beim Aufruf des Delegates bekommst du als erstes Argument IMMER den Button, der den Click ausgelöst hat

    Wobei die Aussage ja nicht ganz richtig ist, unter WPF ist das nicht gewisse das du den Button als Sender bekommst, hängt stark mit der Verschachtelung des Logic-Trees zusammen. Aber bei WinForms ist es auf jedenfall richtig.



  • Jo ok aber bei meinem Project benutze ich WinForms!
    Mit WPF kenne ich mich garnicht aus.
    Egal, nochmals DANKE!


Anmelden zum Antworten