none
Control-Array komplett löschen RRS feed

  • Frage

  • Hi,

    ich hab ein Control-Array in einer GroupBox erstellt und möchte diesen jetzt komplett löschen, das mach ich so:

                foreach (Control cl in this.groupBox1.Controls)
                {
                     this.groupBox1.Controls.Remove(cl);
                }

    Wahrscheinlich muß ich den Array rückwärts löschen, wie geht das?

    Danke Michael

     

    Dienstag, 1. November 2011 09:22

Antworten

  • Was für einen Typ hat die Controls-Eigenschaft genau? Normalerweise gibt es doch eine Clear-Methode, die man aufrufen kann:

      this.groupBox1.Controls.Clear();

     


    MVP Data Platform Development My blog
    • Als Antwort vorgeschlagen Holger M. Rößler Dienstag, 1. November 2011 10:39
    • Als Antwort markiert mimuel Dienstag, 1. November 2011 16:16
    Dienstag, 1. November 2011 10:22
  • Hallo mimuel,

    was Martin meinte war:

    this.groupBox1.Controls.Clear();
    
    

    Somit werden alle Kindelemente aus deiner GroupBox entfernt, egal welcher Controltyp in deiner GroupBox liegen (können sogar gemischt sein).

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    • Als Antwort vorgeschlagen Holger M. Rößler Dienstag, 1. November 2011 11:10
    • Als Antwort markiert mimuel Dienstag, 1. November 2011 16:16
    Dienstag, 1. November 2011 11:10
  • z.B. Typ CheckBox oder egal,

    auf der GroupBox soll nur ein Typ liegen

    Meine Frage bezieht sich auf den .NET-Typ bzw. die .NET-Klasse, von der die Controls-Eigenschaft ist. Mit Windows Forms ist das doch nicht ein "Control-Array", von dem du sprichst, sondern eine http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.aspx, die dann die schon vorgeschlagene Clear-Methode hat, um alle Controls aus der Kollektion zu entfernen.

    MVP Data Platform Development My blog
    • Als Antwort markiert mimuel Dienstag, 1. November 2011 16:16
    Dienstag, 1. November 2011 11:15
  • kann ich auch die Clear()-Methode mit einem Typ kombinieren ?

     

     

    Mit .NET 3.5 oder 4.0 sollte etwa

    foreach (CheckBox cb in this.groupBox1.Controls.OfType<CheckBox>().ToList()) {

      this.groupBox1.Controls.Remove(cb);

    }

    funktionieren, um nur CheckBox-Controls zu entfernen.


    MVP Data Platform Development My blog
    • Als Antwort vorgeschlagen Elmar BoyeEditor Dienstag, 1. November 2011 12:22
    • Als Antwort markiert mimuel Dienstag, 1. November 2011 16:15
    Dienstag, 1. November 2011 11:38

Alle Antworten

  • Was für einen Typ hat die Controls-Eigenschaft genau? Normalerweise gibt es doch eine Clear-Methode, die man aufrufen kann:

      this.groupBox1.Controls.Clear();

     


    MVP Data Platform Development My blog
    • Als Antwort vorgeschlagen Holger M. Rößler Dienstag, 1. November 2011 10:39
    • Als Antwort markiert mimuel Dienstag, 1. November 2011 16:16
    Dienstag, 1. November 2011 10:22
  • z.B. Typ CheckBox oder egal,

    auf der GroupBox soll nur ein Typ liegen

    Dienstag, 1. November 2011 11:02
  • Hallo mimuel,

    was Martin meinte war:

    this.groupBox1.Controls.Clear();
    
    

    Somit werden alle Kindelemente aus deiner GroupBox entfernt, egal welcher Controltyp in deiner GroupBox liegen (können sogar gemischt sein).

    Viele Grüße
    Holger M. Rößler


    Kaum macht man es richtig, schon funktioniert es
    • Als Antwort vorgeschlagen Holger M. Rößler Dienstag, 1. November 2011 11:10
    • Als Antwort markiert mimuel Dienstag, 1. November 2011 16:16
    Dienstag, 1. November 2011 11:10
  • Hallo,

    kann ich auch die Clear()-Methode mit einem Typ kombinieren ?

    Danke Michael

     

    Dienstag, 1. November 2011 11:14
  • z.B. Typ CheckBox oder egal,

    auf der GroupBox soll nur ein Typ liegen

    Meine Frage bezieht sich auf den .NET-Typ bzw. die .NET-Klasse, von der die Controls-Eigenschaft ist. Mit Windows Forms ist das doch nicht ein "Control-Array", von dem du sprichst, sondern eine http://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.aspx, die dann die schon vorgeschlagene Clear-Methode hat, um alle Controls aus der Kollektion zu entfernen.

    MVP Data Platform Development My blog
    • Als Antwort markiert mimuel Dienstag, 1. November 2011 16:16
    Dienstag, 1. November 2011 11:15
  • kann ich auch die Clear()-Methode mit einem Typ kombinieren ?

     

     

    Mit .NET 3.5 oder 4.0 sollte etwa

    foreach (CheckBox cb in this.groupBox1.Controls.OfType<CheckBox>().ToList()) {

      this.groupBox1.Controls.Remove(cb);

    }

    funktionieren, um nur CheckBox-Controls zu entfernen.


    MVP Data Platform Development My blog
    • Als Antwort vorgeschlagen Elmar BoyeEditor Dienstag, 1. November 2011 12:22
    • Als Antwort markiert mimuel Dienstag, 1. November 2011 16:15
    Dienstag, 1. November 2011 11:38