none
String zu Button RRS feed

  • Frage

  • Hallo,

    ich habe in einem String den Namen eines Button (z.B. "btnMulti0" bis btnMulti17) .

    Nun möchte ich auf den entsprechenden Button zugreifen.

     

    Folgendes habe ich versucht:

    btnName = "btnMulti" + i.ToString();
    btn = (Button)btnName; 

    btnName ist vom Typ String und btn vom Typ Button.

    Leider bekomme ich die Meldung "Eine Konvertierung vom Typ "string" in "System.Windows.Forms.Button" ist nicht möglich."

    Wie mache ich es richtig?

    Bin für jeden Tipp dankbar.

     

    Gruß

    Dirk

    Donnerstag, 28. Juli 2011 21:02

Antworten

  • Hallo,

    magisch wird aus einet Zeichenkette kein Button (Steuerelement).
    Da musst Du schon die Controls-Auflistung des jeweiligen Containers (z. B. die Form) durchsuchen.
    Dann kannst Du dafür ControlCollection.FindControl verwenden:

        private Button FindButtonByIndex(int buttonIndex)
        {
          string buttonName = "btnMulti" + buttonIndex.ToString();
          var controls = this.Controls.Find(buttonName, false); // oder true, wenn in einem ContainerControl
          if (controls.Length == 1)
            return controls[0] as Button;
          return null;
        }
    
    Gruß Elmar

    • Als Antwort markiert dikima Donnerstag, 28. Juli 2011 21:54
    Donnerstag, 28. Juli 2011 21:43
    Beantworter

Alle Antworten

  • Hallo,

    magisch wird aus einet Zeichenkette kein Button (Steuerelement).
    Da musst Du schon die Controls-Auflistung des jeweiligen Containers (z. B. die Form) durchsuchen.
    Dann kannst Du dafür ControlCollection.FindControl verwenden:

        private Button FindButtonByIndex(int buttonIndex)
        {
          string buttonName = "btnMulti" + buttonIndex.ToString();
          var controls = this.Controls.Find(buttonName, false); // oder true, wenn in einem ContainerControl
          if (controls.Length == 1)
            return controls[0] as Button;
          return null;
        }
    
    Gruß Elmar

    • Als Antwort markiert dikima Donnerstag, 28. Juli 2011 21:54
    Donnerstag, 28. Juli 2011 21:43
    Beantworter
  • Hallo Elmar,

     

    vielen Dank. So klappt es. FindControl hatte ich schon bei meiner Internetsuche gefunden hab es aber nicht als Lösung erkannt.

     

     

    Nochmals Danke

     

    Dirk

    Donnerstag, 28. Juli 2011 21:58