C#에서 입력 대화 상자 만들기

Fil Zjazel Romaeus Villegas 2023년10월12일
  1. Microsoft Visual Basic을 사용한 입력 대화 상자
  2. C#에서 Windows Forms를 사용한 사용자 지정 입력 대화 상자
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 파일을 찾아 확인을 클릭합니다.

참조를 성공적으로 추가한 후 코드에서 using 문을 사용할 수 있습니다.

using Microsoft.VisualBasic;

입력 상자 자체는 다음 매개변수를 제공하여 생성됩니다.

  • Prompt: 창에 표시될 메시지입니다. 전달해야 하는 유일한 필수 매개변수입니다.
  • Title: 표시할 창 제목
  • Default: 입력 텍스트 상자의 기본값
  • X 좌표: Input Box 시작 위치의 X 좌표
  • Y 좌표: Input Box 시작 위치의 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 Forms를 사용한 사용자 지정 입력 대화 상자

입력 대화 상자를 만드는 또 다른 옵션은 사용자 지정 입력 대화 상자를 만드는 것입니다. 입력 대화 상자를 만드는 것의 한 가지 이점은 첫 번째 방법보다 더 많은 창을 사용자 지정할 수 있다는 것입니다. 아래 예제의 코드를 활용하려면 먼저 아래 단계를 사용하여 System.Windows.Forms.dllSystem.Drawing.dll에 대한 참조를 추가해야 합니다.

  • 솔루션 탐색기로 이동
  • 참조를 마우스 오른쪽 버튼으로 클릭
  • 참조 추가를 클릭합니다.
  • 왼쪽의 Assemblies 탭을 클릭합니다.
  • Microsoft.VisualBasic.dllSystem.Drawing.dll 파일을 찾아 확인을 클릭합니다.

참조를 성공적으로 추가한 후 코드에서 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