Steuerelmente zur Laufzeit erstellen

Mororu

Mitglied
Hallo zusammen habe wieder mal eine Frage.

Kann mir jemand erklären wie ich Steuerelemente zur Laufzeit erstellen kann. Habe im Netz gesucht leider nur Antworten für VB.NET gefunden.

Also zur Erklärung meines Problems.

Ich habe ein Formular mit einem Button und einer Textbox. Jetzt möchte ich in die Textbox eine Zahl schreiben und den Button klicken. Danach sollten so viele Textboxen kreiert werden wie ich eingegeben habe. Also wenn ich 3 eingebe sollen 3 Textboxen erscheinen.

Wäre sehr toll wenn ihr mir weiter helfen könntet.
 
schau dir mal den code in "initialise component an... dort siehts du genau wie eine textbox aufgerufen wird...
oder suche in deinem Form nach "TextBox"...
Code:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication3
{
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.TextBox textBox1;
// hier die zusätzlichen textboxen auch deklarieren...
		/[...]
		public Form1()
		{
						InitializeComponent();

		}

		//[...]
		#region Vom Windows Form-Designer generierter Code
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung. 
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
		/// </summary>
		private void InitializeComponent()
		{
			this.textBox1 = new System.Windows.Forms.TextBox();
			this.SuspendLayout();
			// 
			// textBox1
			// 
			this.textBox1.Location = new System.Drawing.Point(88, 96);
			this.textBox1.Name = "textBox1";
			this.textBox1.TabIndex = 0;
			this.textBox1.Text = "textBox1";
// den obigen code musst du so oder so ähnlich für jede Textbox dann an der (zeitlichen) stele wio es auftauchen soll bauen
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(292, 273);
			this.Controls.Add(this.textBox1);
			this.Name = "Form1";
			this.Text = "Form1";
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// Der Haupteinstiegspunkt für die Anwendung.
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}
	}
}
 
Zuletzt bearbeitet:
Ja ich habe diesen auch schon angeschaut aber ich möchte es so, dass wenn ich den Button klicke gleich eine neue Textbox erscheint.
 
in etwa so

Code:
TBoxen  = new Textbox[Anzahl];

for(int i=0;i<Anzahl;i++)
{
TBoxen.Location = new Point(100,100+100*i);
..
this.Controls.Add( TBoxen[i]);
TBoxen[i].OnEvent += ...
}

Sorry hab gerade mein IDE nicht zur Hand.
Auf jeden fall ein Array in der Klasse erstellen.
> private Textbox[] TBoxen;
Beim Klick den Array mit der Anzahl der Elemente initalisieren.
Die Positionen setzen, ganz wichtig die Texboxen in die Componentenauflistung des Forms zu hängen, damit er die Zeichenaufrufe und Ereignisse weiterleitet.
Anschliessend sollte man noch Ereignisse die man benötigt an einen Ereignishandler übergeben.
 
Zuletzt bearbeitet:
Hi.

Was ist daran so schwer für dich?

Code:
int tcount = 5;
TextBox[] textBoxes = new TextBox[tcount];

for (int i = 0; i < tcount; i++)
{
	TextBox tbox = new TextBox();
	tbox.Location = new Point(..);
	// Weitere eigenschaften setzen..
	tbox.Click += new EventHandler(this.TextBox_Click);
	this.Controls.Add(tbox);
	textBoxes[i] = tbox;
}

MfG,
Alex
 
Tut mir leid, bin halt noch Anfänger. Aber zum Glück gibt es ja Profis wie dich Crazy Weasel.

Jedenfalls vielen Dank für die gekonnte Hilfe.
 
Zurück