在 C# 中建立輸入對話方塊

Fil Zjazel Romaeus Villegas 2023年1月30日 2022年4月20日
  1. 使用 Microsoft Visual Basic 的輸入對話方塊
  2. C# 中使用 Windows 窗體的自定義輸入對話方塊
在 C# 中建立輸入對話方塊

本教程將演示如何使用與 VB.Net 中類似的兩種不同方法在 C# 中建立輸入對話方塊。

輸入對話方塊是一個彈出視窗,它顯示訊息提示並請求使用者輸入。然後可以在程式碼中使用輸入。

C# 中沒有 VB.NET 的輸入對話方塊版本,因此你可以使用兩種方法之一。第一個也是最簡單的方法是使用 Microsoft.VisualBasic.Interaction 中提供的 InputBox。另一種方法是使用 System.Windows.FormsSystem.Drawing 建立你自己的自定義對話方塊。

使用 Microsoft Visual Basic 的輸入對話方塊

由於 C# 沒有像 VB.NET 中那樣的輸入對話方塊版本,因此你可以新增對 Microsoft.VisualBasic 的引用並使用它的 InputBox

要使用 Microsoft.VisualBasic,你必須首先按照以下步驟將其新增到專案的引用中。

  • 導航到解決方案資源管理器
  • 右鍵單擊​​引用
  • 點選新增引用
  • 單擊左側的 Assemblies 選項卡
  • 找到 Microsoft.VisualBasic.dll 檔案並點選 OK

成功新增引用後,你可以在程式碼中使用其 using 語句。

using Microsoft.VisualBasic;

輸入框本身是通過提供以下引數建立的。

  • 提示:要在視窗中顯示的訊息。這是唯一需要傳遞的強制引數。
  • 標題:要顯示的視窗標題
  • 預設值:輸入文字框的預設值
  • X 座標:輸入框起始位置的 X 座標
  • Y 座標:輸入框起始位置的 Y 座標
string input = Interaction.InputBox("Prompt", "Title", "Default", 10, 10);

呼叫此輸入框後,程式將等待響應,然後繼續執行其餘程式碼。

例子:

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();

        }
    }
}

在上面的示例中,我們建立了一個帶有謎語提示的輸入框,出現在螢幕的左上角。提交輸入後,將值列印到控制檯。

輸出:

The letter w

C# 中使用 Windows 窗體的自定義輸入對話方塊

建立輸入對話方塊的另一個選項是建立你自己的自定義輸入對話方塊。建立輸入對話方塊的一個好處是它允許你自定義視窗,而不是第一種方法。要使用以下示例中的程式碼,你必須首先使用以下步驟新增對 System.Windows.Forms.dllSystem.Drawing.dll 的引用。

  • 導航到解決方案資源管理器
  • 右鍵單擊引用
  • 點選新增引用
  • 單擊左側的 Assemblies 選項卡
  • 找到 Microsoft.VisualBasic.dllSystem.Drawing.dll 檔案並單擊 OK

成功新增引用後,你可以在程式碼中使用它們的 using 語句。

例子:

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;
        }

    }
}

在上面的示例中,我們建立了一個自定義函式,該函式使用 System.Windows.Forms 中的元素並將它們單獨新增到對話方塊中。雖然你可以對不同的元素進行硬編碼,但你也可以在函式中新增引數並引用它們,以獲得儘可能多的自定義。在構建並顯示對話方塊後,程式等待使用者提供輸入以在控制檯中列印它。

輸出:

the letter w

相關文章 - Csharp GUI