2009-07-18 11 views
6

Bonjour Je suis en train de créer une application qui a besoin d'ajouter des adresses IP de serveur car il n'y a pas de fonction InputBox en C# J'essaie de compléter cette forme en utilisant très nouveau à la langue donc pas 100% quant à ce que je devrais faire. En ce moment j'ai mon formulaire principal et un formulaire qui servira de ma boîte de saisie qui veut cacher en charge. Ensuite, lorsque l'utilisateur clique sur l'adresse IP d'ajout sur le formulaire principal, je souhaite ouvrir le formulaire secondaire et renvoyer l'adresse IP entrée dans une zone de texte sur le formulaire secondaire.Création d'une zone de saisie en C# à l'aide de formulaires

Alors, comment pourrais-je faire cela? Ou existe-t-il de meilleurs moyens d'obtenir des résultats similaires?

+0

est pas stupide, mais vrai. – kenny

Répondre

8

Dans votre principale forme, ajoutez un gestionnaire d'événements pour l'événement Cliquez de bouton Ajouter une adresse Ip. Dans le gestionnaire d'événements, faire quelque chose de similaire que le code ci-dessous:

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; 
     } 
    } 
} 

Modifier: Ajouter un autre exemple pour s'adapter à manemawanna commentaire.

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; 
     } 
    } 
} 

Dans votre formulaire d'entrée, ajoutez une propriété:

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

Vous devriez mieux utiliser l'instruction using(). :) –

+0

Eh bien, nous apprenons des choses tous les jours :), j'ai appliqué en utilisant le mot-clé dans mon code sur tout (Pen, SqlConnection, Stream, etc.) mais je ne l'ai jamais fait sur un formulaire. Probablement parce que je n'ai jamais vu un exemple l'appliquer ... même dans un livre. –

+0

C'est ce que j'ai actuellement private void btnAddServer_Click (expéditeur d'objet, EventArgs e) { chaîne ipAdd; } Pas beaucoup Je connais mon autre forme que je souhaite utiliser s'appelle Entrée il a une zone de texte appelée txtInput et un bouton appelé btnInput. Alors, comment cela correspondrait-il à ce que vous avez donné comme réponse? Désolé mais je suis nouveau à tout ça. – manemawanna

1

Ajouter un bouton dans le formulaire principal.

Créer un formulaire avec zone de texte pour l'adresse IP. (disons-le IPAddressForm)

Ajoutez un gestionnaire d'événement de clic pour ce bouton.

Dans le gestionnaire d'événements, créez une instance de IPAddressForm et appelez la méthode showdialog de IPAddressForm.

Stockez l'adresse IP dans une variable de classe.

Si le résultat ShowDialog est ok, lisez la variable de classe de la forme principale (plus simple est de déclarer le terrain public)

1

On dirait que Francis a l'idée correcte qui est ce que je l'aurais suggéré. Cependant, juste pour ajouter à cela, je suggère probablement d'utiliser un MaskedTextBox au lieu d'un TextBox de base et d'ajouter le format d'adresse IP en tant que masque.

1

Vous pouvez simplement utiliser le VB InputBox ...

  1. Ajouter référence à Microsoft.VisualBasic
  2. string result = Microsoft.VisualBasic.Interaction.InputBox ("Titre", "texte", "" 10, 20);
2

J'ai également eu besoin de cette fonctionnalité. Voici mon code; il auto-centre et tailles pour s'adapter à l'invite. La méthode publique crée une boîte de dialogue et renvoie l'entrée de l'utilisateur, ou null s'ils s'annulent.

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

Merci beaucoup. ça a marché...... –

0

Vous pouvez créer votre boîte aux lettres spéciale. J'ai créé ma boîte de message pour obtenir des informations de base de données comme ci-dessous. Et lorsque la boîte de message s'ouvre, l'application s'arrête pendant que vous cliquez sur un bouton dans la boîte aux lettres associée.

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; 
       } 
      } 
     } 
    } 
} 

et dans votre principal appel d'applications comme:

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