Laden...

Form dynamisch erweitern?

Erstellt von Merlin001969 vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.208 Views
M
Merlin001969 Themenstarter:in
89 Beiträge seit 2005
vor 14 Jahren
Form dynamisch erweitern?

Hallo zusammen,

besteht die Möglichkeit ein WinForm dynamisch zu erweitern?

Hintergrund der Frage ist folgendes.
Ich habe aktuell zwei Textboxen die mit Werten gefüllt werden und mittels eines Operators einen berechneten Wert ausgeben.

Nun möchte aber nicht nur 2 Textboxen sondern theoretisch, also auf Useranforderung, n-Textboxen, deren Werte zu einer Berechnung herangezogen werden.

Der Ablauf könnte dann so ausehen.

  1. Textbox1 + Textbox2 = Ergebnis
  2. User möchte auch Textbox3 mit in die Berechnung einbeziehen. Also klick auf einen Button oder Checkb und das Form zeigt eine weitere Zeile
  3. Textbox1 + Textbox2 * Textbox3 = Ergebnis
  4. User möchte noch weitere Werte (Ablauf siehe Punkt2) und und und

Wie gefragt, besteht die Möglichkeit zu so etwas oder ist dies vollkommener Quatsch?

Gruß
Merlin

Gelöschter Account
vor 14 Jahren

Wie gefragt, besteht die Möglichkeit zu so etwas oder ist dies vollkommener Quatsch?

der designer macht das also ist es kein quatsch 😃

schau dir doch mal an, was der designer in der myform.Designer.cs so alles reinschreibst. all das kannst du genau so auch in deinem code machen (z.b. innerhalb deiner methoden).

K
133 Beiträge seit 2009
vor 14 Jahren
TextBox t = new TextBox();
/* Hier das Format der TB definieren. Wie Jack schon schrieb kannst du diese aus dem Designer holen. */
this.Controls.Add(t);
M
Merlin001969 Themenstarter:in
89 Beiträge seit 2005
vor 14 Jahren

Danke für eure Hilfe. Werde mir das ganze mal anschauen.

S
322 Beiträge seit 2007
vor 14 Jahren

Hallo Merlin,

ich habe mir die Mühe gemacht dir ein Beispiel zu schreiben:


        List<TextBox> lstTextbox = new List<TextBox>();
        private Point ptStartLocation = new Point(100, 100);

        private void cmdAddTextbox_Click(object sender, EventArgs e)
        {
            TextBox txtBox = new TextBox();

            //Erste Textbox?
            if (lstTextbox.Count == 0)
            {
                txtBox.Location = ptStartLocation;
            }
            else
            {
                // unter der letzten Textbox positionieren
                txtBox.Location = new Point(lstTextbox[lstTextbox.Count-1].Location.X, 
                    lstTextbox[lstTextbox.Count-1].Location.Y + lstTextbox[lstTextbox.Count-1].Height + 12);
            }
            
            lstTextbox.Add(txtBox);

            //in die Form einfügen
            this.Controls.Add(txtBox);
        }

        private void cmdDeleteTextbox_Click(object sender, EventArgs e)
        {
            //letzte Textbox löschen
            if (lstTextbox.Count > 0)
            {
                lstTextbox[lstTextbox.Count - 1].Dispose();
                lstTextbox.RemoveAt(lstTextbox.Count - 1);
            }
        }

        private void cmdCalculate_Click(object sender, EventArgs e)
        {
            //Es müssen mindestens 1 Textboxen vorhanden sein
            if (lstTextbox.Count > 0)
            {
                double dblSumme = 0.0;
                foreach (TextBox text1 in lstTextbox)
                {
                    double dblWert = 0.0;
                    if (double.TryParse(text1.Text, out dblWert))
                    {
                        //die werte summieren
                        dblSumme += dblWert;
                    }
                }

                MessageBox.Show("Summe: " + dblSumme.ToString());
            }
        }