Erstellen ein Eingabedialogfeld in C#

Fil Zjazel Romaeus Villegas 12 Oktober 2023
  1. Eingabedialogfeld mit Microsoft Visual Basic
  2. Benutzerdefiniertes Eingabedialogfeld mit Windows Forms in C#
Erstellen ein Eingabedialogfeld 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.

  • Rechtsklick auf Referenzen
  • Klicken Sie auf Add Reference
  • Suchen Sie die Datei Microsoft.VisualBasic.dll und klicken Sie auf OK

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.

  • Rechtsklick auf Referenzen
  • Klicken Sie auf Add Reference
  • Suchen Sie die Dateien Microsoft.VisualBasic.dll und System.Drawing.dll und klicken Sie auf OK

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

Verwandter Artikel - Csharp GUI