C# 表單間傳值(Form) 幾種方法,我也不懂,能實現功能,先記下來,以後研究…

來源:互聯網
上載者:User

1、委託

  兩個表單,表單很簡單,只實現改變顏色功能,一看就會:

  

  代碼如下,只貼按鈕事件代碼:

  

開啟Form2按鈕事件

private void button1_Click(object sender, EventArgs e)        {            Form2 frm2 = new Form2();            frm2.ChangeColor += new ChangeFormColor(frm2_ChangeColor);            frm2.Show();        }        void frm2_ChangeColor(bool topmost)        {            this.BackColor = Color.LightBlue;            this.Text = "改變成功!";        }
改變Form1顏色按鈕

     //定義一個委託                 public delegate void ChangeFormColor(bool topmost);         //給一個事件        public event ChangeFormColor ChangeColor;         private void button1_Click(object sender, EventArgs e)        {            ChangeColor(true);            this.Close();        }

 

2、先來看

修改之後按Confirm,關閉form2,自動重新整理form1,思路是這樣:在form1上面查詢顯示到datagridview,右鍵選擇修改,彈出模式表單form2,修改,關閉,自動重新整理form1。

Form1 表單代碼

            //添加到修改按鈕裡面,彈出模式表單Form2,進行修改            Form2 form2 = new Form2();            form2.Owner = this;            form2.ShowDialog();
Confirm按鈕代碼

if (//你的修改方法)            {                MessageBox.Show("修改成功!");                //把擁有Form2的表單強制轉換為Form1,然後賦值給Form1表單類型的變數form1                Form1 form1 = (Form1)this.Owner;                //注意下面select()方法,是form1裡面的一個查詢方法,作用等於refresh,但refresh不行,無所謂,調用這個方法來重新整理一樣的。                form1.select();                Close();            } 

 

3、第三種有點小麻煩,但也不錯(如果修改的資料單一,比較少的話)

兩個表單的如下(介面很簡單,主要是示範功能,但Form2裡用一個按鈕進行資料提交,關閉表單就不行,必須要寫到FormClosed事件裡面,鬱悶......誰有更好的方法,一起交流交流):

單擊choose 彈出form2,選擇完性別之後,關閉表單,資料傳遞到form1sex框中,代碼少,全貼出來吧

Form1 表單全部代碼

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 test{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            Form2 frm2 = new Form2();            if (frm2.ShowDialog()==DialogResult.OK)            {                //用模式表單彈出來,給form2裡面public屬性的strSex賦值                textBox2.Text = frm2.strSex;                frm2 = null;  //清空            }        }    }}
Form2 表單全部代碼

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 test{    public partial class Form2 : Form    {        public Form2()        {            InitializeComponent();        }                //定義一個private屬性str用於儲存sex,用到什麼屬性,就自己加什麼屬性,完了把游標停到屬性str這裡,按Ctrl+R,E,自動封裝        private string str;        public string strSex //這裡自動封裝後應該是Str,我改了改名字,表糾結這個        {            get { return str; }            set { str = value; }        }        private void Form2_FormClosed(object sender, FormClosedEventArgs e)        {            //賦值完之後關閉表單            this.strSex = comboBox1.SelectedText;            this.DialogResult = DialogResult.OK;        }    }}

 

OK,寫完了,這個主要是給自己做做筆記,便於以後翻閱,各位看就看,不看就閃,如果有什麼不對的地方,還請指出來,不要JJWW,鄙視這種人!我也是初學者,誰不是從這裡過來的!!!

轉載請註明出處:http://www.cnblogs.com/xw-yanger/archive/2012/06/26/2563562.html

有問題就發郵件:Xw_yanger@163.com

大家共同進步!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.