In diesem kleinen Tutorial geht es darum eine eigene InputBox zu entwerfen und funktionsfähig zu machen.
Wenn Fehler drinne sein sollten, bitte auf jeden Fall Bescheid geben.
Das soll ein Grundgerüst darstellen und überhaupt das Prinzip der Kommunikation zwischen 2 Formen veranschaulichen (besonders bei ShowDialog()).
Designen:
Zunächst mal erstellt man eine neue Form, die einen eindeutigen Namen, wie z. Bs. „
frmInputBox.cs“ bekommt.
Folgende Eigenschaften müssen passend eingestellt werden:
- FormBorderStyle = FixedSingle (oder FixedToolBox)
- KeyPreview = true (damit man mit der Eingabetaste die InputBox bestätigen kann)
- MinBox = false
- MaxBox = false
- ShowIcon = false
- ShowInTaskbar = false
- StartPosition = CenterParent (damit die Form zentriert über dem Aufrufer erscheint)
Danach plaziert man 1 Label, 1 Textfeld und 2 Buttons, die zu
lblDescription,
txtInput und
bttOK bzw.
bttCancel umgetauft werden.
Etwa so kann man die Steuerelemente dann anordnen:
Jetzt muss man noch die DialogResult – Eigenschaften der beiden Buttons richtig setzen. OK bzw. Cancel.
Bei der Form selbst, ordnet man der
AcceptButton Eigenschaft den
bttOK Button zu und bei
CancelButton den
bttCancel Button.
Code:
Man muss jetzt also 3 Eigenschaften kapseln: den Fenstertext (Bezeichnung des Formulars), die Beschreibung (die lblDescription zugewiesen wird) und die Benutzereingabe.
Das geschiet folgendermaßen:
C#-Code: |
public string WindowTitle
{
get { return this.Text; }
set { this.Text = value; }
}
public string Description
{
get { return lblDescription.Text; }
set { lblDescription.Text = value; }
}
public string Default
{
get { return txtInput.Text; }
set { txtInput.Text = value; }
}
|
Wenn man die “frmInputBox” jetzt instanzieren würde, hätte das Objekt also drei neue Eigenschaften (WindowTitle, Description und Default) hinzubekommen, die man frei setzen und abrufen kann:
C#-Code: |
frmInputBox InputBox = new frmInputBox();
InputBox.WindowTitle = “Eingabe erwartet”;
InputBox.Description = “Geben Sie irgendwas ein:”;
|
Es ist aber auch ganz praktisch, wenn man die die Eigenschaften direkt beim Instanzieren setzen kann. Dafür muss der Konstruktor überladen werden:
C#-Code: |
public frmInputBox(string Description, string Fenstertext, string Default)
: this()
{
this.Description = Description;
this.WindowTitle = Fenstertext;
txtInput.Text = Default;
}
|
Man kann sich also entscheiden, ob man nichts übergibt oder gleich alle drei Werte. Wenn ein Wert nicht bekannt sein sollte, kann man schließlich auch „“ schreiben.
Zum Schluss noch das Click – Ereignis des
bttCancel – Buttons anpassen:
C#-Code: |
private void bttCancel_Click(object sender, EventArgs e)
{
txtInput.Text = "";
}
|
Somit ist gewährleistet, dass die Benutzereingabe gelöscht wird, falls der Benutzer auf „Abbrechen“ klickt.
So. Nun ist die ganze Sache eigentlich auch schon fertig.
Man kann jetzt die InputBox folgendermaßen auswerten:
(das kommt in eine andere Form!)
C#-Code: |
private void button1_Click(object sender, EventArgs e)
{
frmInputBox InputBox = new frmInputBox("Geben Sie einen Suchbegriff ein:", "Suchen", "");
if (InputBox.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("Sie haben " + InputBox.Default + " eingegeben.");
}
else
{
MessageBox.Show("Abgebrochen!");
}
}
|
Wegen diesem Thread erstellt:
Link