In C# gibt es verschiedene Techniken, GUIs zu erzeugen:
- winforms
- wpf
- …
In Windows Forms
(kurz meist winforms
) ist das relativ einfach, da man hier komplett in C# arbeiten muss und nicht im „Backend-Code“ (C#) und im „Frontend-Code“ (XAML), wie in WPF.
Zu Beginn müssen wir zuerst einen Frame (hier: Form
), der alle Controls
(Textboxen, Labels, etc.) hält, erstellen und soweit vorbereiten.
Dazu legen wir eine Klasse MyForm
an, welche von Form erbt:
public partial class MyForm:Form
Nun müssen wir noch die Attribute, wie bspw. Größe und Art des Rahmens anpassen. Dazu greifen wir auf die Properties der Klasse zu und setzen diese:
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; //Setzt den Rahmen auf einen nicht vergrößerbaren, schmalen Rahmen ohne Min./Max-Boxen this.ClientSize = new Size(Breite, Höhe); this.Name = "Meine Form"; //Setzt den Namen der Form this.ResumeLayout(false); //Unterdrückt Änderungen an der GUI this.PerformLayout(); //Lässt Änderungen an der GUI zu und lädt diese
Nun erstellen wir ein Objekt dieser Form:
MyForm myFrmObj = new MyForm();
Um jetzt Controls (hier werden wir eine Textbox hinzufügen) zur Form hinzuzufügen, müssen wir ein Objekt dieses Controls erstellen:
TextBox txtContent = new TextBox();
Anschließend greifen wir wieder auf die Attribute zu und ändern diese zu unseren Wünschen ab.
txtContent.Size = new Size(Width, Height); txtContent.Location = new Point(X,Y);
Achtung die Position (Location
) ist relativ, d.h. X = 0, Y = 0
sind im linken oberen Eck der Form, nicht des Bildschirms.
Nun fügen wir das Control zu unserer Form hinzu:
myFrmObj.Controls.Add(txtContent);
Natürlich kann man auch andere Attribute setzen, hier verweise ich auf das MSDN von Microsoft, in dem die Attribute von Klassen erklärt sind.
Aber auch IntelliSense hilft hier weiter.
Was jetzt noch wichtig ist, ist die Option
txtContent.AutoSize = true;
. Diese lässt Controls
automatisch abhängig vom Content wachsen.
Um nun noch Events hinzuzufügen, erstellen wir die entsprechende Methode private void myMethod(object sender, EventArgs e)
und fügen den Handler diesem Event zu:
this.txtContent.Click += new System.EventHandler(this.myMethod);
Zu guter letzt muss man die Controls beim Aufruf der Form initialisieren lassen, sodass man Zugriff während der Laufzeit bekommt.
Hierzu fügt man im Konstruktor der Form den Befehl InitializeComponent();
ein:
public MyForm() { InitializeComponent(); }
Mehr Informationen zum Handlern und Events findet man im MSDN.
Generelle Infos findet man auf der Supportseite von Microsoft.
Letzte Kommentare
Alter
"Sehr infomativer Beitrag! "
Daniel Abou Chleih
"Hallo Vanessa, ich habe im Mai diesen Jahres das Studium abgeschlossen. Im Großen ..."