C#의 InputBox

9897 단어 input
방법 1
에 있습니다.NET Framework에는 VB의 InputBox 함수와 유사한 함수가 없습니다. 비록 VB에 대한 런타임 인용을 빌려 VB를 제외할 수 있지만.NET 프로그램에서 VB의 InputBox를 사용하는데 왜 클래스를 직접 써서 비슷한 기능을 실현하지 않습니까?
다음 클래스는 유사한 InputBox 함수를 구현합니다.
using System;

using System.Windows.Forms;



namespace Input

{

    /// <summary>

    /// clsInputBox      。

    /// </summary>

    public class InputBox : System.Windows.Forms.Form

    {

        private System.Windows.Forms.TextBox txtData;

        private System.Windows.Forms.Label lblInfo;

        private System.ComponentModel.Container components = null;



        private InputBox()

        {

            InitializeComponent();

        }

        

        protected override void Dispose(bool disposing)

        {

            if (disposing)

            {

                if (components != null)

                {

                    components.Dispose();

                }



            }

            base.Dispose(disposing);

        }

        

        private void InitializeComponent()

        {



            this.txtData = new System.Windows.Forms.TextBox();

            this.lblInfo = new System.Windows.Forms.Label();

            this.SuspendLayout();



            // 

            // txtData

            // 



            this.txtData.Font = new System.Drawing.Font("  ", 10.5F, System.Drawing.FontStyle.Regular, 

                                                        System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));

            this.txtData.Location = new System.Drawing.Point(19, 8);

            this.txtData.Name = "txtData";

            this.txtData.Size = new System.Drawing.Size(317, 23);

            this.txtData.TabIndex = 0;

            this.txtData.Text = "";

            this.txtData.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtData_KeyDown);



            // 

            // lblInfo

            // 



            this.lblInfo.BackColor = System.Drawing.SystemColors.Info;

            this.lblInfo.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;

            this.lblInfo.FlatStyle = System.Windows.Forms.FlatStyle.System;

            this.lblInfo.Font = new System.Drawing.Font("  ", 9F, System.Drawing.FontStyle.Regular,

                                                        System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));

            this.lblInfo.ForeColor = System.Drawing.Color.Gray;

            this.lblInfo.Location = new System.Drawing.Point(19, 32);

            this.lblInfo.Name = "lblInfo";

            this.lblInfo.Size = new System.Drawing.Size(317, 16);

            this.lblInfo.TabIndex = 1;

            this.lblInfo.Text = "[Enter]   | [Esc]  ";



            // 

            // InputBox

            // 



            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

            this.ClientSize = new System.Drawing.Size(350, 48);

            this.ControlBox = false;

            this.Controls.Add(this.lblInfo);

            this.Controls.Add(this.txtData);

            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;

            this.Name = "InputBox";

            this.Text = "InputBox";

            this.ResumeLayout(false);

        }



        //       

        private void txtData_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)

        {

            if (e.KeyCode == Keys.Enter)

            {

                this.Close();

            }



            else if (e.KeyCode == Keys.Escape)

            {

                txtData.Text = string.Empty;

                this.Close();

            }



        }



        //  InputBox

        public static string ShowInputBox(string Title, string keyInfo)

        {

            InputBox inputbox = new InputBox();

            inputbox.Text = Title;

            if (keyInfo.Trim() != string.Empty)

                inputbox.lblInfo.Text = keyInfo;

            inputbox.ShowDialog();



            return inputbox.txtData.Text;

        }

    }



}

이 종류의 정적 방법인 ShowInputBox를 직접 호출하면 됩니다. 그 중에서 Title 파라미터는 대화상자의 Text이고, 키인포 파라미터는 탭 lblInfo(사용자 정의 정보를 표시할 수 있음)의 Text입니다.구체적으로 다음과 같이 호출됩니다.
private void button_Click(object sender, System.EventArgs e)

 {



      //Microsoft.VisualBasic.Interaction.InputBox(  "type  your  name  ",  "input  ","",0,0); 

      //                 string.Empty。



      string inMsg= Input.InputBox.ShowInputBox("    ",string.Empty );

      //            

      if (inMsg.Trim() != string.Empty )

      {

           MessageBox.Show(inMsg);

      }

      else

      {

           MessageBox.Show("   string.Empty");

      }



 }

 
방법 2
VB의 원래 함수 라이브러리는 부분적으로 마이크로소프트에 들어갔다.VisualBasic.Interaction에서 예를 들면 InputBox, MsgBox가 있습니다.
C#에서 InputBox를 사용하면 당연히 스스로 실현할 수 있지만 사실은Form일 뿐입니다. 저는 VB를 사용하는 것을 추천합니다.NET 안의, 헤헤, 사용법:
1. Microsoft 추가VisualBasic의 참조
2. string str = Microsoft.VisualBasic.Interaction.InputBox(힌트 문자, 대화상자 제목, 기본값, X 좌표, Y 좌표)
위의 X 좌표, Y 좌표는 -1 및 -1 값을 추출하여 화면 가운데 표시를 나타냅니다.

좋은 웹페이지 즐겨찾기