2009-07-18 21 views
6
一個輸入框在C#

你好,我目前正在創建具有需要服務器的IP地址添加到它,因爲在C#中沒有InputBox函數我試圖完成這個使用表單的應用程序,但我非常新的語言,所以不是我應該做的100%。創建使用表單

目前我有我的主窗體和一個窗體,它將充當我的輸入框,它想要加載隱藏。然後,當用戶點擊主窗體上的添加IP地址時,我希望打開輔助表單並將輸入的IP地址返回到輔助表單上的文本框中。

那麼我該怎麼做呢?或者有沒有更好的方法來達到類似的結果?

+0

是不是很傻,但卻是事實。 – kenny 2009-07-18 13:05:01

回答

8

在主窗體,添加事件處理程序的事件按鈕的點擊添加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(); 
     } 
    } 
} 
+0

您應該更好地使用using()語句。 :) – 2009-07-18 12:39:40

+0

好了,我們每一天:)學習的東西,我申請使用關鍵字在我的代碼上的一切(筆,SqlConnection的,流等),但我從來沒那麼一個形式。可能是因爲我從來沒有見過一個應用它的例子......甚至在一本書中。 – 2009-07-18 13:01:35

1

在主窗體中添加一個按鈕。

爲ip地址創建一個帶有文本框的表單。 (可以說IPAddressForm)

爲該按鈕添加單擊事件處理程序。

在事件處理程序中,創建一個IPAddressForm的實例並調用IPAddressForm的showdialog方法。

將IP地址存儲在某個類變量中。

如果ShowDialog的結果是正確的,閱讀的主要形式類變量(最簡單的方法是聲明字段作爲公共)

1

看起來像弗朗西斯有正確的想法是什麼,我會建議。然而,僅僅添加到這一點,我可能會建議使用MaskedTextBox中,而不是一個基本的文本框,並添加IP地址格式的面具。

1

你可以只使用VB的InputBox ......

  1. 添加引用Microsoft.VisualBasic程序
  2. 字符串結果= Microsoft.VisualBasic.Interaction.InputBox( 「標題」, 「文本」, 「」 ,10,20);
2

我需要這個功能了。這是我的代碼;它自動中心和大小,以適應提示。公共方法創建一個對話框並返回用戶的輸入,如果它們被取消,則返回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 
    } 
} 
0

您可以創建您的特殊消息框。我創建了我的消息框來獲取如下的數據庫信息。當消息框打開時,應用程序停止在您點擊相關消息框中的任何按鈕。

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('?');