今天写代码时,需要用到VB中InputBox的功能,这才发现C#没有提供这个功能,于是自己动手写了一个。
using System;
using System.Windows.Forms;
using System.Drawing;
class InputBox : Form
{
private Label labelText=new Label();
private TextBox textboxValue=new TextBox();
private Button buttonOK=new Button();
private bool onlyNumeric;
public InputBox()
{
Init();
}
private void Init()
{
this.Width = 400;
this.Height = 150;
this.StartPosition = FormStartPosition.CenterParent;
this.FormBorderStyle = FormBorderStyle.FixedDialog;
this.MinimizeBox = false;
this.MaximizeBox = false;
labelText.AutoSize = true;
labelText.Location = new Point(10, 20);
textboxValue.Location = new Point(10, (this.ClientSize.Height - textboxValue.Height) / 2);
textboxValue.Width = this.ClientSize.Width - 20;
buttonOK.Text = "确定(&O)";
buttonOK.Location = new Point((this.ClientSize.Width-buttonOK.Width)/2, this.ClientSize.Height - buttonOK.Height - 10);
this.Controls.Add(labelText);
this.Controls.Add (textboxValue);
this.Controls.Add(buttonOK);
this.AcceptButton=buttonOK;
buttonOK.Click+=new EventHandler(buttonOK_Click);
textboxValue.KeyPress += new KeyPressEventHandler(textboxValue_KeyPress);
}
void textboxValue_KeyPress(object sender, KeyPressEventArgs e)
{
if(onlyNumeric)
if ((e.KeyChar < (char)Keys.D0 || e.KeyChar > (char)Keys.D9) && e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
/// <summary>
/// InputBox的静态函数,返回输入的字符串
/// </summary>
/// <param name="Title">窗口标题</param>
/// <param name="Text">提示文本</param>
/// <param name="DefaultValue">默认值</param>
/// <returns>返回字符串</returns>
public static string Input(string Title, string Text, string DefaultValue)
{
InputBox inputBox = new InputBox();
inputBox.Text = Title;
inputBox.labelText.Text = Text;
DialogResult result = inputBox.ShowDialog();
if (result == DialogResult.OK)
return inputBox.textboxValue.Text;
else
return DefaultValue;
}
/// <summary>
/// InputBox的静态函数,返回输入的字符串
/// </summary>
/// <param name="Title">窗口标题</param>
/// <param name="Text">提示文本</param>
/// <param name="DefaultValue">默认值</param>
/// <param name="OnlyNumeric">是否只允许输入数字</param>
/// <returns>返回字符串</returns>
public static string Input(string Title, string Text, string DefaultValue,bool OnlyNumeric)
{
InputBox inputBox = new InputBox();
inputBox.Text = Title;
inputBox.labelText.Text = Text;
inputBox.onlyNumeric = OnlyNumeric;
DialogResult result = inputBox.ShowDialog();
if (result == DialogResult.OK)
return inputBox.textboxValue.Text;
else
return DefaultValue;
}
private void buttonOK_Click(object sender,EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
}
调用示例:
string value=InputBox.Input(窗口标题,提示文本,默认返回值);
只允许输入数字的InputBox调用:
string value=InputBox.Input(窗口标题,提示文本,默认返回值,true);
using System;
using System.Windows.Forms;
using System.Drawing;
class InputBox : Form
{
private Label labelText=new Label();
private TextBox textboxValue=new TextBox();
private Button buttonOK=new Button();
private bool onlyNumeric;
public InputBox()
{
Init();
}
private void Init()
{
this.Width = 400;
this.Height = 150;
this.StartPosition = FormStartPosition.CenterParent;
this.FormBorderStyle = FormBorderStyle.FixedDialog;
this.MinimizeBox = false;
this.MaximizeBox = false;
labelText.AutoSize = true;
labelText.Location = new Point(10, 20);
textboxValue.Location = new Point(10, (this.ClientSize.Height - textboxValue.Height) / 2);
textboxValue.Width = this.ClientSize.Width - 20;
buttonOK.Text = "确定(&O)";
buttonOK.Location = new Point((this.ClientSize.Width-buttonOK.Width)/2, this.ClientSize.Height - buttonOK.Height - 10);
this.Controls.Add(labelText);
this.Controls.Add (textboxValue);
this.Controls.Add(buttonOK);
this.AcceptButton=buttonOK;
buttonOK.Click+=new EventHandler(buttonOK_Click);
textboxValue.KeyPress += new KeyPressEventHandler(textboxValue_KeyPress);
}
void textboxValue_KeyPress(object sender, KeyPressEventArgs e)
{
if(onlyNumeric)
if ((e.KeyChar < (char)Keys.D0 || e.KeyChar > (char)Keys.D9) && e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
/// <summary>
/// InputBox的静态函数,返回输入的字符串
/// </summary>
/// <param name="Title">窗口标题</param>
/// <param name="Text">提示文本</param>
/// <param name="DefaultValue">默认值</param>
/// <returns>返回字符串</returns>
public static string Input(string Title, string Text, string DefaultValue)
{
InputBox inputBox = new InputBox();
inputBox.Text = Title;
inputBox.labelText.Text = Text;
DialogResult result = inputBox.ShowDialog();
if (result == DialogResult.OK)
return inputBox.textboxValue.Text;
else
return DefaultValue;
}
/// <summary>
/// InputBox的静态函数,返回输入的字符串
/// </summary>
/// <param name="Title">窗口标题</param>
/// <param name="Text">提示文本</param>
/// <param name="DefaultValue">默认值</param>
/// <param name="OnlyNumeric">是否只允许输入数字</param>
/// <returns>返回字符串</returns>
public static string Input(string Title, string Text, string DefaultValue,bool OnlyNumeric)
{
InputBox inputBox = new InputBox();
inputBox.Text = Title;
inputBox.labelText.Text = Text;
inputBox.onlyNumeric = OnlyNumeric;
DialogResult result = inputBox.ShowDialog();
if (result == DialogResult.OK)
return inputBox.textboxValue.Text;
else
return DefaultValue;
}
private void buttonOK_Click(object sender,EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
}
调用示例:
string value=InputBox.Input(窗口标题,提示文本,默认返回值);
只允许输入数字的InputBox调用:
string value=InputBox.Input(窗口标题,提示文本,默认返回值,true);
在C#中加入InputBox
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class InputBox : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label_Info;
private TextBox textBox_Data;
private Button button_Enter;
private Button button_Esc;
private System.ComponentModel.Container components = null;
private InputBox()
{
InitializeComponent();
this.TopMost = true;
//this.StartPosition = FormStartPosition.CenterScreen;
//inputbox.Location.X = 0; inputbox.Location.Y = 0;
//inputbox.StartPosition = FormStartPosition.CenterScreen;
//inputbox.Left = 0;
//inputbox.Top = 0;
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.label_Info = new System.Windows.Forms.Label();
this.textBox_Data = new System.Windows.Forms.TextBox();
this.button_Enter = new System.Windows.Forms.Button();
this.button_Esc = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label_Info
//
this.label_Info.BackColor = System.Drawing.SystemColors.ButtonFace;
this.label_Info.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.label_Info.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label_Info.ForeColor = System.Drawing.Color.Gray;
this.label_Info.Location = new System.Drawing.Point(12, 38);
this.label_Info.Name = "label_Info";
this.label_Info.Size = new System.Drawing.Size(177, 49);
this.label_Info.TabIndex = 1;
this.label_Info.Text = "[Enter]确认|[Esc]取消";
this.label_Info.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBox_Data
//
this.textBox_Data.Location = new System.Drawing.Point(8, 8);
this.textBox_Data.Name = "textBox_Data";
this.textBox_Data.Size = new System.Drawing.Size(230, 21);
this.textBox_Data.TabIndex = 2;
this.textBox_Data.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox_Data_KeyDown);
//
// button_Enter
//
this.button_Enter.Location = new System.Drawing.Point(195, 43);
this.button_Enter.Name = "button_Enter";
this.button_Enter.Size = new System.Drawing.Size(50, 20);
this.button_Enter.TabIndex = 3;
this.button_Enter.Text = "确 认";
this.button_Enter.UseVisualStyleBackColor = true;
this.button_Enter.Click += new System.EventHandler(this.button_Enter_Click);
//
// button_Esc
//
this.button_Esc.Location = new System.Drawing.Point(195, 69);
this.button_Esc.Name = "button_Esc";
this.button_Esc.Size = new System.Drawing.Size(50, 20);
this.button_Esc.TabIndex = 4;
this.button_Esc.Text = "取 消";
this.button_Esc.UseVisualStyleBackColor = true;
this.button_Esc.Click += new System.EventHandler(this.button_Esc_Click);
//
// InputBox
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(250, 96);
this.Controls.Add(this.button_Esc);
this.Controls.Add(this.button_Enter);
this.Controls.Add(this.textBox_Data);
this.Controls.Add(this.label_Info);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "InputBox";
this.Text = "InputBox";
this.ResumeLayout(false);
this.PerformLayout();
}
//对键盘进行响应
private void textBox_Data_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) { button_Enter_Click(sender, e); }
else if (e.KeyCode == Keys.Escape) { button_Esc_Click(sender, e); }
}
private void button_Enter_Click(object sender, EventArgs e)
{
this.Close();
}
private void button_Esc_Click(object sender, EventArgs e)
{
textBox_Data.Text = string.Empty; this.Close();
}
//显示InputBox
public static string ShowInputBox(int Left, int Top, string Title, string Prompt, string DefaultResponse)
{
InputBox inputbox = new InputBox();
if (Title.Trim() != string.Empty) inputbox.Text = Title;
if (Prompt.Trim() != string.Empty) inputbox.label_Info.Text = Prompt;
if (DefaultResponse.Trim() != string.Empty) inputbox.textBox_Data.Text = DefaultResponse;
inputbox.ShowDialog();
inputbox.Left = Left; inputbox.Top = Top;
return inputbox.textBox_Data.Text;
}
public static string ShowInputBox(FormStartPosition Position, string Title, string Prompt, string DefaultResponse)
{
InputBox inputbox = new InputBox();
inputbox.StartPosition = Position;
if (Title.Trim() != string.Empty) inputbox.Text = Title;
if (Prompt.Trim() != string.Empty) inputbox.label_Info.Text = Prompt;
if (DefaultResponse.Trim() != string.Empty) inputbox.textBox_Data.Text = DefaultResponse;
inputbox.ShowDialog();
return inputbox.textBox_Data.Text;
}
public static string ShowInputBox()
{
return ShowInputBox(FormStartPosition.CenterScreen, string.Empty, string.Empty, string.Empty);
}
public static string ShowInputBox(string Title)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, string.Empty, string.Empty);
}
public static string ShowInputBox(string Title, string Prompt)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, Prompt, string.Empty);
}
public static string ShowInputBox(string Title, string Prompt, string DefaultResponse)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, Prompt, DefaultResponse);
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class InputBox : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label_Info;
private TextBox textBox_Data;
private Button button_Enter;
private Button button_Esc;
private System.ComponentModel.Container components = null;
private InputBox()
{
InitializeComponent();
this.TopMost = true;
//this.StartPosition = FormStartPosition.CenterScreen;
//inputbox.Location.X = 0; inputbox.Location.Y = 0;
//inputbox.StartPosition = FormStartPosition.CenterScreen;
//inputbox.Left = 0;
//inputbox.Top = 0;
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.label_Info = new System.Windows.Forms.Label();
this.textBox_Data = new System.Windows.Forms.TextBox();
this.button_Enter = new System.Windows.Forms.Button();
this.button_Esc = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label_Info
//
this.label_Info.BackColor = System.Drawing.SystemColors.ButtonFace;
this.label_Info.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.label_Info.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label_Info.ForeColor = System.Drawing.Color.Gray;
this.label_Info.Location = new System.Drawing.Point(12, 38);
this.label_Info.Name = "label_Info";
this.label_Info.Size = new System.Drawing.Size(177, 49);
this.label_Info.TabIndex = 1;
this.label_Info.Text = "[Enter]确认|[Esc]取消";
this.label_Info.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBox_Data
//
this.textBox_Data.Location = new System.Drawing.Point(8, 8);
this.textBox_Data.Name = "textBox_Data";
this.textBox_Data.Size = new System.Drawing.Size(230, 21);
this.textBox_Data.TabIndex = 2;
this.textBox_Data.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox_Data_KeyDown);
//
// button_Enter
//
this.button_Enter.Location = new System.Drawing.Point(195, 43);
this.button_Enter.Name = "button_Enter";
this.button_Enter.Size = new System.Drawing.Size(50, 20);
this.button_Enter.TabIndex = 3;
this.button_Enter.Text = "确 认";
this.button_Enter.UseVisualStyleBackColor = true;
this.button_Enter.Click += new System.EventHandler(this.button_Enter_Click);
//
// button_Esc
//
this.button_Esc.Location = new System.Drawing.Point(195, 69);
this.button_Esc.Name = "button_Esc";
this.button_Esc.Size = new System.Drawing.Size(50, 20);
this.button_Esc.TabIndex = 4;
this.button_Esc.Text = "取 消";
this.button_Esc.UseVisualStyleBackColor = true;
this.button_Esc.Click += new System.EventHandler(this.button_Esc_Click);
//
// InputBox
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(250, 96);
this.Controls.Add(this.button_Esc);
this.Controls.Add(this.button_Enter);
this.Controls.Add(this.textBox_Data);
this.Controls.Add(this.label_Info);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "InputBox";
this.Text = "InputBox";
this.ResumeLayout(false);
this.PerformLayout();
}
//对键盘进行响应
private void textBox_Data_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) { button_Enter_Click(sender, e); }
else if (e.KeyCode == Keys.Escape) { button_Esc_Click(sender, e); }
}
private void button_Enter_Click(object sender, EventArgs e)
{
this.Close();
}
private void button_Esc_Click(object sender, EventArgs e)
{
textBox_Data.Text = string.Empty; this.Close();
}
//显示InputBox
public static string ShowInputBox(int Left, int Top, string Title, string Prompt, string DefaultResponse)
{
InputBox inputbox = new InputBox();
if (Title.Trim() != string.Empty) inputbox.Text = Title;
if (Prompt.Trim() != string.Empty) inputbox.label_Info.Text = Prompt;
if (DefaultResponse.Trim() != string.Empty) inputbox.textBox_Data.Text = DefaultResponse;
inputbox.ShowDialog();
inputbox.Left = Left; inputbox.Top = Top;
return inputbox.textBox_Data.Text;
}
public static string ShowInputBox(FormStartPosition Position, string Title, string Prompt, string DefaultResponse)
{
InputBox inputbox = new InputBox();
inputbox.StartPosition = Position;
if (Title.Trim() != string.Empty) inputbox.Text = Title;
if (Prompt.Trim() != string.Empty) inputbox.label_Info.Text = Prompt;
if (DefaultResponse.Trim() != string.Empty) inputbox.textBox_Data.Text = DefaultResponse;
inputbox.ShowDialog();
return inputbox.textBox_Data.Text;
}
public static string ShowInputBox()
{
return ShowInputBox(FormStartPosition.CenterScreen, string.Empty, string.Empty, string.Empty);
}
public static string ShowInputBox(string Title)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, string.Empty, string.Empty);
}
public static string ShowInputBox(string Title, string Prompt)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, Prompt, string.Empty);
}
public static string ShowInputBox(string Title, string Prompt, string DefaultResponse)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, Prompt, DefaultResponse);
}
}
}