Erstellen ein Eingabedialogfeld in C#
- Eingabedialogfeld mit Microsoft Visual Basic
-
Benutzerdefiniertes Eingabedialogfeld mit Windows Forms in
C#
Dieses Tutorial zeigt, wie Sie ein Eingabedialogfeld in C# mit zwei verschiedenen Methoden ähnlich wie in VB.Net erstellen.
Ein Eingabedialogfeld ist ein Popup-Fenster, das eine Eingabeaufforderung anzeigt und Eingaben von einem Benutzer anfordert. Die Eingabe kann dann im Code verwendet werden.
Es gibt keine Version des Eingabedialogfelds von VB.NET in C#, sodass Sie eine von zwei Methoden verwenden können. Die erste und einfachste ist die Verwendung der in Microsoft.VisualBasic.Interaction
bereitgestellten InputBox
. Die andere Methode besteht darin, Ihr eigenes benutzerdefiniertes Dialogfeld mit System.Windows.Forms
und System.Drawing
zu erstellen.
Eingabedialogfeld mit Microsoft Visual Basic
Da C# keine eigene Version eines Eingabedialogs wie in VB.NET hat, können Sie einen Verweis auf Microsoft.VisualBasic
hinzufügen und dessen InputBox
verwenden.
Um Microsoft.VisualBasic
nutzen zu können, müssen Sie es zuerst zu den Referenzen des Projekts hinzufügen, indem Sie die folgenden Schritte ausführen.
-
Navigieren Sie zum Lösungs-Explorer
-
Rechtsklick auf Referenzen
-
Klicken Sie auf
Add Reference
-
Klicken Sie links auf die Registerkarte
Assemblies
-
Suchen Sie die Datei
Microsoft.VisualBasic.dll
und klicken Sie aufOK
Nachdem Sie die Referenz erfolgreich hinzugefügt haben, können Sie ihre using-Anweisung in Ihrem Code verwenden.
using Microsoft.VisualBasic;
Das Eingabefeld selbst wird durch Angabe der folgenden Parameter erstellt.
- Prompt: Die Nachricht, die im Fenster angezeigt werden soll. Dies ist der einzige obligatorische Parameter, der übergeben werden muss.
- Title: Der anzuzeigende Fenstertitel
- Default: Der Standardwert des Eingabetextfelds
- X-Koordinate: Die X-Koordinate der Startposition des Eingabefelds
- Y-Koordinate: Die Y-Koordinate der Startposition des Eingabefelds
string input = Interaction.InputBox("Prompt", "Title", "Default", 10, 10);
Nachdem dieses Eingabefeld aufgerufen wurde, wartet das Programm auf eine Antwort, bevor es mit dem Rest des Codes fortfährt.
Beispiel:
using System;
using Microsoft.VisualBasic;
namespace VisualBasic_Example {
class Program {
static void Main(string[] args) {
// Create the input dialog box with the parameters below
string input =
Interaction.InputBox("What is at the end of the rainbow?", "Riddle", "...", 10, 10);
// After the user has provided input, print to the console
Console.WriteLine(input);
Console.ReadLine();
}
}
}
Im obigen Beispiel erstellen wir ein Eingabefeld mit einer Rätselaufforderung, die in der oberen linken Ecke des Bildschirms erscheint. Nachdem die Eingabe übermittelt wurde, wird der Wert an die Konsole ausgegeben.
Ausgabe:
The letter w
Benutzerdefiniertes Eingabedialogfeld mit Windows Forms in C#
Eine weitere Möglichkeit, einen Eingabedialog zu erstellen, ist das Erstellen eines eigenen benutzerdefinierten Eingabedialogs. Ein Vorteil beim Erstellen eines Eingabedialogfelds besteht darin, dass Sie das Fenster mehr als bei der ersten Methode anpassen können. Um den Code im folgenden Beispiel zu verwenden, müssen Sie zuerst einen Verweis auf System.Windows.Forms.dll
und System.Drawing.dll
hinzufügen, indem Sie die folgenden Schritte ausführen.
-
Navigieren Sie zum Lösungs-Explorer
-
Rechtsklick auf Referenzen
-
Klicken Sie auf
Add Reference
-
Klicken Sie links auf die Registerkarte
Assemblies
-
Suchen Sie die Dateien
Microsoft.VisualBasic.dll
undSystem.Drawing.dll
und klicken Sie aufOK
Nachdem Sie die Referenz erfolgreich hinzugefügt haben, können Sie ihre using-Anweisungen in Ihrem Code verwenden.
Beispiel:
using System;
using System.Windows.Forms;
using System.Drawing;
namespace CustomDialog_Example {
class Program {
static void Main(string[] args) {
// Initialize the input variable which will be referenced by the custom input dialog box
string input = "...";
// Display the custom input dialog box with the following prompt, window title, and dimensions
ShowInputDialogBox(ref input, "What is at the end of the rainbow?", "Riddle", 300, 200);
// Print the input provided by the user
Console.WriteLine(input);
Console.ReadLine();
}
private static DialogResult ShowInputDialogBox(ref string input, string prompt,
string title = "Title", int width = 300,
int height = 200) {
// This function creates the custom input dialog box by individually creating the different
// window elements and adding them to the dialog box
// Specify the size of the window using the parameters passed
Size size = new Size(width, height);
// Create a new form using a System.Windows Form
Form inputBox = new Form();
inputBox.FormBorderStyle = FormBorderStyle.FixedDialog;
inputBox.ClientSize = size;
// Set the window title using the parameter passed
inputBox.Text = title;
// Create a new label to hold the prompt
Label label = new Label();
label.Text = prompt;
label.Location = new Point(5, 5);
label.Width = size.Width - 10;
inputBox.Controls.Add(label);
// Create a textbox to accept the user's input
TextBox textBox = new TextBox();
textBox.Size = new Size(size.Width - 10, 23);
textBox.Location = new Point(5, label.Location.Y + 20);
textBox.Text = input;
inputBox.Controls.Add(textBox);
// Create an OK Button
Button okButton = new Button();
okButton.DialogResult = DialogResult.OK;
okButton.Name = "okButton";
okButton.Size = new Size(75, 23);
okButton.Text = "&OK";
okButton.Location = new Point(size.Width - 80 - 80, size.Height - 30);
inputBox.Controls.Add(okButton);
// Create a Cancel Button
Button cancelButton = new Button();
cancelButton.DialogResult = DialogResult.Cancel;
cancelButton.Name = "cancelButton";
cancelButton.Size = new Size(75, 23);
cancelButton.Text = "&Cancel";
cancelButton.Location = new Point(size.Width - 80, size.Height - 30);
inputBox.Controls.Add(cancelButton);
// Set the input box's buttons to the created OK and Cancel Buttons respectively so the window
// appropriately behaves with the button clicks
inputBox.AcceptButton = okButton;
inputBox.CancelButton = cancelButton;
// Show the window dialog box
DialogResult result = inputBox.ShowDialog();
input = textBox.Text;
// After input has been submitted, return the input value
return result;
}
}
}
Im obigen Beispiel haben wir eine benutzerdefinierte Funktion erstellt, die Elemente aus System.Windows.Forms
verwendet und sie einzeln zum Dialogfeld hinzufügt. Während Sie die verschiedenen Elemente fest codieren könnten, könnten Sie auch Parameter hinzufügen und innerhalb der Funktion darauf verweisen, um so viele Anpassungen zu erhalten, wie Sie möchten. Nach dem Erstellen und Anzeigen des Dialogfelds wartet das Programm darauf, dass der Benutzer eine Eingabe bereitstellt, um es in der Konsole zu drucken.
Ausgabe:
the letter w