窗體間傳值 ,子窗體傳給父窗體

第一種方法:將Form1整個窗體做爲值傳給Form2this

                            

form1 button1彈出 from2,spa

from2  numericUpDown1的值改變,使form1 textBox1的值改變。code

Form1代碼:orm

        //第一種方法:將整個窗體做爲值傳給Form2
        private void button1_Click(object sender, EventArgs e)
        {
            Form frm2 = new Form2(this);
            frm2.ShowDialog();
        }
        
       //改變textBox1的值
        public void ChangeText(string s)
        {
            this.textBox1.Text = s;
        }

Form2代碼:blog

       //將傳過來的Form1所有賦值給f1,這樣就能夠在這邊調用Form1了
        private Form1 f1;
        public Form2(Form1 frm1)
        {
            InitializeComponent();
            f1 = frm1;
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            //調用Form1中的changetext事件
            f1.ChangeText(numericUpDown1.Value.ToString());
        }

 

第二種方法:委託與事件事件

         

 

form1 button1彈出 from2,get

from2  numericUpDown1的值改變,使form1 textBox1的值改變,string

from2  numericUpDown1的值清空,使form1 textBox1的值清空。it

Form1代碼:event

        //2.註冊事件
        private void button1_Click(object sender, EventArgs e)
        {
            Form3 frm3 = new Form3();
            //寫到+=時,按兩次Tab鍵會自動生成frm3_changed,frm3_empty兩個事件
            frm3.UpdateTextValueEvent += new Form3.ChangeTextValueDelegate(frm3_changed);//改變值的事件
            frm3.EmptyTextValueEvent += new Form3.ChangeTextValueDelegate(frm3_empty);//清空值的事件
            frm3.ShowDialog();
        }

        //改變值的事件
        private void frm3_changed(string s)
        {
            this.textBox1.Text = s;
        }

        //清空值的事件
        private void frm3_empty(string s)
        {
            this.textBox1.Text = "";
        }

Form3代碼:

        //1.定義帶參數的委託與兩個事件
        public delegate void ChangeTextValueDelegate(string s);
        public event ChangeTextValueDelegate UpdateTextValueEvent;
        public event ChangeTextValueDelegate EmptyTextValueEvent;

        //3.傳值 
        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            UpdateTextValueEvent(numericUpDown1.Value.ToString());
        }
        private void button1_Click(object sender, EventArgs e)
        {
            EmptyTextValueEvent(numericUpDown1.Value.ToString());
        }
相關文章
相關標籤/搜索