none
共用表單 RRS feed

  • 問題

  • 我有兩個表單
    一個是個人資料表單 以下簡稱A
    一個是郵遞區號表單 以下簡稱B

    A表單內有郵遞區號這個TEXTBOX,當我點選TEXTBOX會跳出B給我選擇郵遞區號
    B郵遞區號表單的輸入Button會把我所選的郵遞區號傳回A中的TEXTBOX
    往後我有需要填選郵遞區號的表單
    同樣的只要呼叫B出來就可以使用這功能
    這要該怎麼設計@@?
    我以前寫的如下
    A------------------------------------------------------------------------------------------------------
    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;

    namespace Archome_Beta
    {
        public partial class CustomerForm : Form
        {
            public CustomerForm()
            {
                InitializeComponent();
            }

            private void cusAddressTextBox_Click(object sender, EventArgs e)
            {
                var ZipCode = new ZipCodeForm();
                ZipCode.ShowDialog(this);
            }

        }
    }

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

    namespace Archome_Beta
    {
        public partial class ZipCodeForm : Form
        {
            public ZipCodeForm()
            {
                InitializeComponent();
            }
            public void InputAddress(by fm)
            {       
                fm.ActiveControl.Text =textBox1.Text +textBox1.Text;
                this.Close();
            }


            private void ZipCodeTimer_Tick(object sender, EventArgs e)
            {
                textBox1.Text = 路段ComboBox.SelectedValue + 地區ComboBox.Text + 市區鄉鎮ComboBox.Text + 路段ComboBox.Text;
            }

            private void button1_Click(object sender, EventArgs e)
            {
              InputAddress();
            }

        }
    }

    2009年7月23日 上午 02:53

解答

  • 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;
    
    namespace Archome_Beta
    {
        public partial class ZipCodeForm : Form
        {
            private string _result = null;
    
            public string Result { get { return this._result; } set { this._result = value; }}
    
            public ZipCodeForm()
            {
                InitializeComponent();
            }
            public void InputAddress()
            {        
                this._result = textBox1.Text +textBox1.Text; // 設定結果。 
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
    
    
            private void ZipCodeTimer_Tick(object sender, EventArgs e)
            {
                textBox1.Text = 路段ComboBox.SelectedValue + 地區ComboBox.Text + 市區鄉鎮ComboBox.Text + 路段ComboBox.Text;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
              InputAddress();
            } 
    
        }
    }
    
    A 程式這樣呼叫:
    B dialog = new B();
    
    if (dialog.ShowDialog() == DialogResult.OK)
    {
        this.txtAddress.Text = dialog.Result; // 取得結果。
    }
    這樣就可以在不同的表單中共用相同的程式(用一樣的呼叫法)了。

    小人物一枚。
    2009年7月23日 上午 03:03
    版主

所有回覆

  • Form1

                var ZipCode = new ZipCodeForm();
                ZipCode.ShowDialog(this);
                string str = ZipCode.ActiveControl.Text;


    Form2

          public void InputAddress()
            {        
                this.ActiveControl.Text =textBox1.Text +textBox1.Text;
                this.Close();
            }


    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    2009年7月23日 上午 03:02
    版主
  • 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;
    
    namespace Archome_Beta
    {
        public partial class ZipCodeForm : Form
        {
            private string _result = null;
    
            public string Result { get { return this._result; } set { this._result = value; }}
    
            public ZipCodeForm()
            {
                InitializeComponent();
            }
            public void InputAddress()
            {        
                this._result = textBox1.Text +textBox1.Text; // 設定結果。 
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
    
    
            private void ZipCodeTimer_Tick(object sender, EventArgs e)
            {
                textBox1.Text = 路段ComboBox.SelectedValue + 地區ComboBox.Text + 市區鄉鎮ComboBox.Text + 路段ComboBox.Text;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
              InputAddress();
            } 
    
        }
    }
    
    A 程式這樣呼叫:
    B dialog = new B();
    
    if (dialog.ShowDialog() == DialogResult.OK)
    {
        this.txtAddress.Text = dialog.Result; // 取得結果。
    }
    這樣就可以在不同的表單中共用相同的程式(用一樣的呼叫法)了。

    小人物一枚。
    2009年7月23日 上午 03:03
    版主