Announcement

Collapse
No announcement yet.

Alle Controls einer Form auflisten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Alle Controls einer Form auflisten

    Möchte absolut alle Controls einer Form auflisten.
    Hierzu verwende ich nachfolgenden Alogrithmus, der
    leider nicht perfekt ist, da man nicht weiss wieviele Untercontrols
    vorhanden sind. Geht dies auch besser / anders ?.

    Vielen Dank.

    Code:
    foreach (Control cc in this.Controls)
    {
          if (cc.HasChildren)
          {
                foreach (Control childControl in cc.Controls)
                {
                      if (childControl.HasChildren)
                      {
                           Listbox1.Add(..)
                      }
                      else
                      {
                             Listbox1.Add(..)
                      }
                 }
           }
           else
           {
                Listbox1.Add(..)
           } 
    }

  • #2
    Rekursion

    Hallo !

    Das scheint mir ein Anwendungsfall für eine Rekursion zu sein. Du musst eine Funktion schreiben, die als Übergabeparameter ein Control entgegennimmt und in einer Schleife alle enthaltenen Controls durchläuft (so, wie du es gemacht hast). Aber für jedes gefundene Control muss du die gleiche Funktion wieder aufrufen, dadurch findest Du alle Controls, die auf deinem Form sind.
    Das ganze heisst dann Rekursion.

    Ich hoffe, es hilft Dir weiter ...

    Comment


    • #3
      Vielen Dank für die Antwort.
      Aber wie programmiert man diese Rekursion ?.

      Vielen Dank.

      Comment


      • #4
        Rekursion

        Etwa so... (ganz grob)


        private void GetControls(Control PobjCtrl)
        {
        foreach (Control cc in PobjCtrl.Controls)
        {
        Listbox1.Add(..);

        GetControls(cc); // -> Das ist die Rekursion
        }
        }

        Das erste Control gibst Du mit und dann geht fast alles von alleine ...

        Comment

        Working...
        X