Announcement

Collapse
No announcement yet.

Probleme mit Button List Erstellung

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

  • Probleme mit Button List Erstellung

    Hallo!

    Ich habe ein kleines Problem mit der Erstellung einer Button List.
    Dabei öffne ich ein Panel Fenster (frmFelder) in dem ein paar Felder (Buttons) erstellen möchte. Die Anzahl kann dabei varieren. Nun habe ich das Problem das die Anzahl nicht richtig übergeben/gelesen wird??!!

    Die Anzahl wird dabei folgendermaßen übergeben:

    Code:
            private void StartForm()
            {
                mFrmFelder = new frmFelder(MaxAnzFelder);
                mFrmFelder.SetTabStyle();
                pnlFelder.AutoSize = false;
                pnlFelder.Controls.Add(mFrmFelder);
                mFrmFelder.Show();
            }
    In dem Fenster Felder lese ich nun die Anzahl der Werte ein:
    Code:
          
            public int mAnzFelder;          // Anzahl Felder
    
            public static Felder[] mFeld = new Felder[300]; // Feld-Array mit Felder-Daten
    
            List<Button> mBtns;             // Liste Button  
            static Button mSender;
    
    
            public frmFelder(int pAnzFelder)
            {
                mAnzFelder = pAnzFelder;
            }
    Im mAnzFelder habe ich nun die aktuelle Anzahl der Buttons.

    Nun erstelle ich die Button List folgendermaßen:
    Code:
     private void KonfigForm()
              
            {
             mBtns = new List<Button>(mAnzFelder);
             Button btn;
    
             // Button erzeugen
             this.SuspendLayout();
    
             for (int j = 0; j <= mAnzFelder; j++)
             {
                    btn = new Button();
    
                    btn.Text = btn.Name;
                    this.Font = new Font("Microsoft Sans Serif", 5, FontStyle.Bold);
                    btn.UseVisualStyleBackColor = true;
                    btn.Click += new EventHandler(btn_Click);
    
                    mBtns.Add(btn);
                    this.Controls.Add(btn);
             }
              this.ResumeLayout(false);
            }
    Hierbei wird das ganze aufgerufen. Die mStart Änderung ist sofort aktiv, wenn das Fenster Felder geöffnet wird. -> Es wird KonfigForm() sofort geöffnet.
    Code:
            /// <summary>Buttons neu aufbauen</summary>
            void mStart_OnChanged(object sender, bool e)
            {
                KonfigForm();
                InitButtons();
                InitControls();
                this.AutoScroll = true;
            }
    Beim ersten Mal funktioniert das ganze einwandfrei. Bei den nächste paar Mal macht der die Button List richtig, dann nimmt er auf einmal den alten Wert (mAnzFelder) und schreibt die Button List neu und somit falsch.

    Kann mir da jemand weiterhelfen? Bei Fragen bitte einfach melden!

    schöne Grüße und vielen Dank.

  • #2
    Wenn du neue Buttons erzeugst entfernst du denn auch die alten aus der Controls Collection? In KonfigForm machst du ja nur ein this.Controls.Add(btn) und da ich vermute das du die bereits vorhanden Buttons ersetzen willst, also die Buttons die vorher in der mBtns Liste wahren, dann musst du die auch explizit auch der Controls Collection entfernen es reicht nicht einfach die Liste neu zu erstellen.

    Comment


    • #3
      Hallo!

      Ich lösche die ganze Seite mit dem Befehl vor dem Erstellen der Button List:
      Code:
      this.Controls.Clear();
      Ist dann die Button List irgendwie im Hintergrund noch vorhanden? Muss ich das ganze zusätzlich aus dem Controls Collection löschen? Wie müsste ich das machen?

      ich vermute das du die bereits vorhanden Buttons ersetzen willst, also die Buttons die vorher in der mBtns Liste wahren, dann musst du die auch explizit auch der Controls Collection entfernen es reicht nicht einfach die Liste neu zu erstellen.
      Genau! Ich möchte die vorhandenen Buttons löschen, also die gesamte Button Lis,t und eine neue( mit einer anderen Anzahl an Buttons) generieren.

      Comment

      Working...
      X