c# visual studio .net4.7.2 Button erstellen ohne Toolbox?
Hallo zusammen. ich habe eine Form mit einem Button. Beim klicken dieses Buttons soll unter diesem Button ein neuer erscheinen. Quasi möchte ich einen Button erstellen ohne Toolbox wie mache ich das
aktueller Code:
public Form1()
{
InitializeComponent();
}
private void btnCreateButton_Click_1(object sender, EventArgs e)
{
//int amount = 0;
//UserInputBox myUserInputBox = new UserInputBox();
//myUserInputBox.ShowDialog();
CreatButton();
}
public void CreatButton()
{
Button Testbutton = new Button();
//int Locationvariable = 0;
//Locationvariable = Locationvariable + 26;
Testbutton.Location = new Point(12, 26);
Testbutton.Size = new Size(776, 22);
Testbutton.Text = "New Button";
Testbutton.Click += new EventHandler(testbutton_click);
this.Controls.Add(Testbutton);
}
public void testbutton_click(object sender, EventArgs e)
{
}
1 Antwort
Im Grunde hast du schon fast alles beisammen. Es fehlt dir noch, die Form mit einem ersten Button auszustatten, den du anklicken kannst, damit weitere Buttons im Fenster platziert werden. Im folgenden Programmtext mache ich das mit der Methode FensterAusstatten, die im Konstruktor nach der Initialisierung der Komponente aufgerufen wird.
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
FensterAusstatten();
}
private int Locationvariable = 0;
private void FensterAusstatten()
{
Button bttn = new Button();
bttn.Text = "Klick mich";
bttn.Size = new Size(70, 26);
bttn.Location = new Point(0, 0);
bttn.Click += new EventHandler(BtnCreateButton_Click_1);
this.Controls.Add(bttn);
}
private void BtnCreateButton_Click_1(object sender, EventArgs e)
{
CreatButton();
}
public void CreatButton()
{
Button Testbutton = new Button();
Locationvariable = Locationvariable + 26;
Testbutton.Location = new Point(12, Locationvariable);
Testbutton.Size = new Size(700, 26);
Testbutton.Text = "New Button";
Testbutton.Click += new EventHandler(Testbutton_click);
this.Controls.Add(Testbutton);
}
public void Testbutton_click(object sender, EventArgs e)
{
Console.WriteLine("button wurde angeklickt");
}
}
}
Du hattest dir auch schon überlegt, wie du es erreichen kannst, die neu eingefügten Buttons untereinander zu platzieren. Die Verwendung der Variablen Locationvariable ist im Prinzip richtig, allerdings muss die Variable als Instanzvariable deiner Form vereinbart werden, damit sie eine ausreichende Lebensdauer hat. Eine in der Methode CreateButton lokal vereinbarte Variable besteht nur für die Dauer des Methodenaufrufs; sie ist deshalb nicht geeignet, die y-Position des zuletzt platzierten Button dauerhaft zu speichern.