C#里的InputBox

在 .NET Framework 中并没有类似 VB 中的 InputBox 函数,虽然可以借助对 VB 的 Runtime 引用,以在 VB 除外的 .NET 程序中使用 VB 的 InputBox ,但是为什么不自己写一个类实现类似的功能呢?

下面一个类实现了类似的 InputBox 函数的功能 :

using System;

using System.Windows.Forms;

namespace Input

{

///

1<summary>
2
3///  clsInputBox  的摘要说明。 
4
5///  </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 , keyInfo 参数是标签 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 if

{

MessageBox.Show( “ 输入为 string.Empty ” );

}

}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus