C#表單傳值

來源:互聯網
上載者:User

標籤:style   blog   io   ar   使用   for   sp   資料   div   

整理一下:

1.靜態變數傳值,非常簡單適合簡單的非執行個體的

public calss form1:Form{    public static int A;}public class form2:Form{   form1.A=1; }

2.委託傳值

public class form1:Form{  public int A{get;set;}  public static Action<int> setIntADelForClass;//類的委託  public Action<int>setIntADel   //執行個體的委託  public void setintA(int a){    A=a;  }  public void form_load(object sender, EventArgs e){  setIntADelForClass=setIntA;  setIntADel   =setIntA;  }}public class form2:Form{  public void setFom1IntA{   form1.setIntADelForClass(10);//通過類的委託將form1 的A變數設定為10  form1 fm1=new form1();  fm1.setIntADel(12);//通過執行個體的委託將新執行個體fm1的A變數設定為12  }}

3.使用onwer屬性,適合對話方塊之間的傳值

public class Form1:Form{  public int A{get;set;}     private void button1_click(object sender, EventArgs e){    A=10;    Form2 fm2=new Form2();    fm2.ShowDialog(this);   }}public class Form2:Form{    private void button1_Click(object sender, EventArgs e)        {            Form1 fm = (Form1)this.Owner;            MessageBox.Show(fm.A);//讀Form1的A            fm.A=11;//寫Form1的A                                        }}

  當然也可以使用委託繼續傳值

4.重構表單建構函式,初始化的時候傳值,只適合初始化的適合,不夠方便

5.委託+事件的方法

下面代碼是一個點擊Form1 button 使Form2的button顯示Form1.textbox內容可以一次性傳很多值,步驟是在表單A中聲明一個事件,B表單中實現相同方法簽名的方法為事件賦值,B中回調該方法Form1的代碼://--------------------------------------->>--------------------Form1--------------- public partial class Form1 : Form{     public string B //擷取textbox1的text        {            get { return textBox1.Text; }            set            {                textBox1.Text = value;            }        }        public delegate void EventArgsaccept(object sender, acceptEventArgs e);//聲明一個事件簽名的委託        public static event EventArgsaccept accept;//相當於執行個體化一個事件        private void button1_Click(object sender, EventArgs e)        {            acceptEventArgs ae = new acceptEventArgs();            ae.b = B;                        if (accept != null) {                accept(this,ae);            }        }    }  }  public class acceptEventArgs : EventArgs {//封裝EventArgs類,添加可傳遞的屬性        public  string b { get; set; }    }//------------------->>----------------------------------end code of form1-----------form2的代碼,實現一個相同簽名的方法,如我們的accept的簽名是 方法名(object a,acceptEventArgs b);//-------------------------------------->>---------------------------------------code of form2--- public partial class Form2 : Form{  private void Form2_Load(object sender, EventArgs e)        {            Form1.accept += Form1_accept;//為form1的事件賦值,當form1執行該事件的時候會執行該方法        }  void Form1_accept(object sender,acceptEventArgs e) {//實現一個相同方法簽名的方法            this.button1.Text = e.b;                 }}//------------------------>>---------------具體的原理,我想因為委託是函數指標所以可以通過傳值能儲存函數指標的位置?所以可以標記相應的執行個體的,執行其他執行個體的方法?還沒看編譯原理,發表一下自己看法,不要誤導福士

  

6.通過全域資料讀寫,適合登陸驗證

 AppDomain.CurrentDomain.SetData("user", "小明"); AppDomain.CurrentDomain.GetData("user");

  

C#表單傳值

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.