2009-07-18 14 views
6

Witam Obecnie tworzę aplikację, która ma potrzebę dodania do niej adresów IP serwera, ponieważ nie ma funkcji InputBox w C# Próbuję wypełnić to za pomocą formularzy, ale jestem bardzo nowy język, więc nie w 100% co do tego, co powinienem zrobić.Tworzenie Inputbox w C# przy użyciu formularzy

W tej chwili mam moją główną formę i formularz, który będzie działał jako moje pole wejściowe, które chce się ukryć pod obciążeniem. Następnie, gdy użytkownik kliknie na Dodaj adres IP w głównym formularzu, chcę otworzyć formularz wtórny i zwrócić adres IP wprowadzony w polu tekstowym na formularzu wtórnym.

Więc jak miałbym to zrobić? A może istnieją lepsze sposoby osiągnięcia podobnych rezultatów?

+0

nie jest to głupie, ale prawdziwe. – kenny

Odpowiedz

8

W głównej postaci, dodać moduł obsługi zdarzeń dla zdarzenia Kliknij przycisku Dodaj adres 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; 
     } 
    } 
} 

Edycja:: w procedurze obsługi zdarzenia, coś podobnego jak w poniższym kodzie zrobić Dodaj kolejny przykład, aby pasował z manemawanna komentarza.

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

W formularzu wejściowe, dodać obiekt:

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

Powinieneś lepiej użyć instrukcji using(). :) –

+0

No cóż, codziennie uczymy się rzeczy :), zastosowałem słowo kluczowe w moim kodzie na wszystko (Pen, SqlConnection, Stream, itp.), Ale nigdy nie zrobiłem tego w formularzu. Prawdopodobnie dlatego, że nigdy nie widziałem przykładu zastosowania go ... nawet w książce. –

+0

To właśnie mam obecnie prywatny void btnAddServer_Click (obiekt nadawca, EventArgs e) { string ipAdd; } Nie wiem Wiem, że moją drugą formą, której chcę użyć, jest nazwa Wejdź, ma pole tekstowe o nazwie txtInput i przycisk o nazwie btnInput. Jak więc to pasuje do tego, co dałeś jako odpowiedź? Przepraszam, ale jestem nowy w tym wszystkim. – manemawanna

1

Dodaj przycisk w głównym formularzu.

Utwórz formularz z polem tekstowym dla adresu IP. (powiedzmy to IPAddressForm)

Dodaj obsługę zdarzenia click dla tego przycisku.

W module obsługi zdarzeń utwórz instancję klasy IPAddressForm i wywołaj metodę showdialog obiektu IPAddressForm.

Zapisz adres IP w niektórych zmiennych klasy.

Jeśli ShowDialog wynik jest ok, odczytu zmiennej klasy z formularza głównego (najprostszym sposobem jest zadeklarować pola jako publiczny)

1

Wygląda Francis ma poprawną pomysł, który jest, co bym sugerował. Jednakże, aby dodać do tego, prawdopodobnie zasugerowałbym użycie MaskedTextBox zamiast podstawowego TextBox i dodać format adresu IP jako Maskę.

1

Można po prostu użyć VB InputBox ...

  1. Dodaj odwołanie do Microsoft.VisualBasic
  2. wynik = Microsoft.VisualBasic.Interaction.InputBox ("Tytuł", "tekst", "string" 10, 20);
2

Też potrzebowałem tej funkcji. Oto mój kod; automatycznie centruje i rozmiary, aby dopasować się do zachęty. Metoda publiczna tworzy okno dialogowe i zwraca dane wprowadzone przez użytkownika lub, jeśli są one anulowane.

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

Dziękuję bardzo. zadziałało...... –

0

Możesz utworzyć swoją specjalną skrzynkę wiadomości. Stworzyłem moją skrzynkę wiadomości na pobieranie informacji z bazy danych, jak poniżej. A kiedy otwiera się wiadomość, aplikacja zatrzymuje się podczas klikania dowolnego przycisku w odpowiednim polu wiadomości.

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

aw głównej rozmowy aplikacji, takich jak:

string[] strPopUp = efexBox.ShowDialog().Split('?'); 
Powiązane problemy