使用表单在C#中创建一个输入框

您好我正在创建一个需要为其添加服务器IP地址的应用程序,因为C#中没有InputBox函数我试图使用表单来完成此操作,但是我对该语言非常新,所以不是100%as我应该做什么。

目前我有我的主表单和一个表单,它将作为我的输入框,想要隐藏负载。 然后,当用户点击主表单上的添加IP地址时,我希望打开辅助表单并将输入的IP地址返回到辅助表单上的文本框中。

那我该怎么做呢? 或者有没有更好的方法来实现类似的结果?

在主窗体中,为事件添加事件处理程序单击按钮添加IP地址。 在事件处理程序中,执行与以下代码类似的操作:

private string m_ipAddress; private void OnAddIPAddressClicked(object sender, EventArgs e) { using(SetIPAddressForm form = new SetIPAddressForm()) { if (form.ShowDialog() == DialogResult.OK) { //Create a property in SetIPAddressForm to return the input of user. m_ipAddress = form.IPAddress; } } } 

编辑 :添加另一个示例以适应manemawanna评论。

 private void btnAddServer_Click(object sender, EventArgs e) { string ipAdd; using(Input form = new Input()) { if (form.ShowDialog() == DialogResult.OK) { //Create a property in SetIPAddressForm to return the input of user. ipAdd = form.IPAddress; } } } 

在“输入”表单中,添加属性:

 public class Input : Form { public string IPAddress { get { return txtInput.Text; } } private void btnInput_Click(object sender, EventArgs e) { //Do some validation for the text in txtInput to be sure the ip is well-formated. if(ip_well_formated) { this.DialogResult = DialogResult.OK; this.Close(); } } } 

我也需要这个function。 这是我的代码; 它自动居中和大小以适应提示。 public方法创建一个对话框并返回用户的输入,如果取消则返回null

 using System; using System.Drawing; using System.Windows.Forms; namespace Utilities { public class InputBox { #region Interface public static string ShowDialog(string prompt, string title, string defaultValue = null, int? xPos = null, int? yPos = null) { InputBoxDialog form = new InputBoxDialog(prompt, title, defaultValue, xPos, yPos); DialogResult result = form.ShowDialog(); if (result == DialogResult.Cancel) return null; else return form.Value; } #endregion #region Auxiliary class private class InputBoxDialog: Form { public string Value { get { return _txtInput.Text; } } private Label _lblPrompt; private TextBox _txtInput; private Button _btnOk; private Button _btnCancel; #region Constructor public InputBoxDialog(string prompt, string title, string defaultValue = null, int? xPos = null, int? yPos = null) { if (xPos == null && yPos == null) { StartPosition = FormStartPosition.CenterParent; } else { StartPosition = FormStartPosition.Manual; if (xPos == null) xPos = (Screen.PrimaryScreen.WorkingArea.Width - Width ) >> 1; if (yPos == null) yPos = (Screen.PrimaryScreen.WorkingArea.Height - Height) >> 1; Location = new Point(xPos.Value, yPos.Value); } InitializeComponent(); if (title == null) title = Application.ProductName; Text = title; _lblPrompt.Text = prompt; Graphics graphics = CreateGraphics(); _lblPrompt.Size = graphics.MeasureString(prompt, _lblPrompt.Font).ToSize(); int promptWidth = _lblPrompt.Size.Width; int promptHeight = _lblPrompt.Size.Height; _txtInput.Location = new Point(8, 30 + promptHeight); int inputWidth = promptWidth < 206 ? 206 : promptWidth; _txtInput.Size = new Size(inputWidth, 21); _txtInput.Text = defaultValue; _txtInput.SelectAll(); _txtInput.Focus(); Height = 125 + promptHeight; Width = inputWidth + 23; _btnOk.Location = new Point(8, 60 + promptHeight); _btnOk.Size = new Size(100, 26); _btnCancel.Location = new Point(114, 60 + promptHeight); _btnCancel.Size = new Size(100, 26); return; } #endregion #region Methods protected void InitializeComponent() { _lblPrompt = new Label(); _lblPrompt.Location = new Point(12, 9); _lblPrompt.TabIndex = 0; _lblPrompt.BackColor = Color.Transparent; _txtInput = new TextBox(); _txtInput.Size = new Size(156, 20); _txtInput.TabIndex = 1; _btnOk = new Button(); _btnOk.TabIndex = 2; _btnOk.Size = new Size(75, 26); _btnOk.Text = "&OK"; _btnOk.DialogResult = DialogResult.OK; _btnCancel = new Button(); _btnCancel.TabIndex = 3; _btnCancel.Size = new Size(75, 26); _btnCancel.Text = "&Cancel"; _btnCancel.DialogResult = DialogResult.Cancel; AcceptButton = _btnOk; CancelButton = _btnCancel; Controls.Add(_lblPrompt); Controls.Add(_txtInput); Controls.Add(_btnOk); Controls.Add(_btnCancel); FormBorderStyle = FormBorderStyle.FixedDialog; MaximizeBox = false; MinimizeBox = false; return; } #endregion } #endregion } } 

在主窗体中添加一个按钮。

使用ipbox的文本框创建一个表单。 (比方说IPAddressForm)

为该按钮添加单击事件处理程序。

在事件处理程序中,创建IPAddressForm的实例并调用IPAddressForm的showdialog方法。

将ip地址存储在某个类变量中。

如果showdialog结果没问题,请从主窗体中读取类变量(最简单的方法是将该字段声明为public)

弗朗西斯看起来有正确的想法,这就是我所建议的。 但是,为了补充一点,我建议使用MaskedTextBox而不是基本的TextBox,并将IP地址格式添加为Mask。

你可以使用VB InputBox ……

  1. 添加对Microsoft.VisualBasic的引用
  2. string result = Microsoft.VisualBasic.Interaction.InputBox(“Title”,“text”,“”,10,20);

您可以创建特殊的消息框。 我创建了用于获取数据库信息的消息框,如下所示。 当消息框打开时,应用程序在您单击相关消息框中的任何按钮期间停止。

 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.Sql; namespace Palmaris_Installation { public class efexBox { public static string ShowDialog() { PopUpDatabase form = new PopUpDatabase(); DialogResult result = form.ShowDialog(); if (result == DialogResult.Cancel) return null; else { if (form.ValueAuthentication == "SQL Server Authentication") return form.Valueservername + "?" + form.ValueAuthentication + "?" + form.ValueUsername + "?" + form.ValuePassword; else return form.Valueservername + "?" + form.ValueAuthentication + "?" + "" + "?" + ""; } } public partial class PopUpDatabase : Form { public PopUpDatabase() { InitializeComponent(); SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance; DataTable table = instance.GetDataSources(); foreach (DataRow row in table.Rows) { cmbServerName.Items.Add(row[0] + "\\" + row[1]); } cmbAuthentication.Items.Add("Windows Authentication"); cmbAuthentication.Items.Add("SQL Server Authentication"); return; } private void InitializeComponent() { this.groupBox1 = new System.Windows.Forms.GroupBox(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); this.cmbServerName = new System.Windows.Forms.ComboBox(); this.cmbAuthentication = new System.Windows.Forms.ComboBox(); this.txtUserName = new System.Windows.Forms.TextBox(); this.txtPassword = new System.Windows.Forms.TextBox(); this.btnCancel = new System.Windows.Forms.Button(); this.btnConnect = new System.Windows.Forms.Button(); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.MaximizeBox = false; this.groupBox1.SuspendLayout(); this.SuspendLayout(); // // groupBox1 // this.groupBox1.Controls.Add(this.btnConnect); this.groupBox1.Controls.Add(this.btnCancel); this.groupBox1.Controls.Add(this.txtPassword); this.groupBox1.Controls.Add(this.txtUserName); this.groupBox1.Controls.Add(this.cmbAuthentication); this.groupBox1.Controls.Add(this.cmbServerName); this.groupBox1.Controls.Add(this.label4); this.groupBox1.Controls.Add(this.label3); this.groupBox1.Controls.Add(this.label2); this.groupBox1.Controls.Add(this.label1); this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.groupBox1.Location = new System.Drawing.Point(0, 0); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(348, 198); this.groupBox1.TabIndex = 0; this.groupBox1.TabStop = false; this.groupBox1.Text = "Database Configration"; this.groupBox1.BackColor = Color.Gray; // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(50, 46); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(69, 13); this.label1.TabIndex = 0; this.label1.Text = "Server Name"; // // label2 // this.label2.AutoSize = true; this.label2.Location = new System.Drawing.Point(50, 73); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(75, 13); this.label2.TabIndex = 0; this.label2.Text = "Authentication"; // // label3 // this.label3.AutoSize = true; this.label3.Location = new System.Drawing.Point(50, 101); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(60, 13); this.label3.TabIndex = 0; this.label3.Text = "User Name"; // // label4 // this.label4.AutoSize = true; this.label4.Location = new System.Drawing.Point(50, 127); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(53, 13); this.label4.TabIndex = 0; this.label4.Text = "Password"; // // cmbServerName // this.cmbServerName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmbServerName.FormattingEnabled = true; this.cmbServerName.Location = new System.Drawing.Point(140, 43); this.cmbServerName.Name = "cmbServerName"; this.cmbServerName.Size = new System.Drawing.Size(185, 21); this.cmbServerName.TabIndex = 1; // // cmbAuthentication // this.cmbAuthentication.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cmbAuthentication.FormattingEnabled = true; this.cmbAuthentication.Location = new System.Drawing.Point(140, 70); this.cmbAuthentication.Name = "cmbAuthentication"; this.cmbAuthentication.Size = new System.Drawing.Size(185, 21); this.cmbAuthentication.TabIndex = 1; this.cmbAuthentication.SelectedIndexChanged += new System.EventHandler(this.cmbAuthentication_SelectedIndexChanged); // // txtUserName // this.txtUserName.Location = new System.Drawing.Point(140, 98); this.txtUserName.Name = "txtUserName"; this.txtUserName.Size = new System.Drawing.Size(185, 20); this.txtUserName.TabIndex = 2; // // txtPassword // this.txtPassword.Location = new System.Drawing.Point(140, 124); this.txtPassword.Name = "txtPassword"; this.txtPassword.Size = new System.Drawing.Size(185, 20); this.txtPassword.TabIndex = 2; // // btnCancel // this.btnCancel.Location = new System.Drawing.Point(250, 163); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(75, 23); this.btnCancel.TabIndex = 3; this.btnCancel.Text = "Cancel"; this.btnCancel.UseVisualStyleBackColor = true; this.btnCancel.DialogResult = DialogResult.Cancel; // // btnConnect // this.btnConnect.Location = new System.Drawing.Point(140, 163); this.btnConnect.Name = "btnConnect"; this.btnConnect.Size = new System.Drawing.Size(75, 23); this.btnConnect.TabIndex = 3; this.btnConnect.Text = "Connect"; this.btnConnect.UseVisualStyleBackColor = true; this.btnConnect.DialogResult = DialogResult.OK; // // PopUpDatabase // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(348, 198); this.Controls.Add(this.groupBox1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Name = "PopUpDatabase"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "::: Database Configration :::"; this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.ResumeLayout(false); } private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox txtPassword; private System.Windows.Forms.TextBox txtUserName; private System.Windows.Forms.ComboBox cmbAuthentication; private System.Windows.Forms.ComboBox cmbServerName; private System.Windows.Forms.Button btnConnect; private System.Windows.Forms.Button btnCancel; public string ValueUsername { get { return txtUserName.Text; } } public string ValuePassword { get { return txtPassword.Text; } } public string Valueservername { get { return cmbServerName.SelectedItem.ToString(); } } public string ValueAuthentication { get { return cmbAuthentication.SelectedItem.ToString(); } } private void cmbAuthentication_SelectedIndexChanged(object sender, EventArgs e) { if (cmbAuthentication.SelectedIndex == 1) { txtUserName.Enabled = true; txtPassword.Enabled = true; } else { txtUserName.Enabled = false; txtPassword.Enabled = false; } } } } } 

并在您的主要应用程序调用如:

  string[] strPopUp = efexBox.ShowDialog().Split('?');