上一篇介紹了通過委託事件的方式,實現了子表單調用父表單的控制項。本文將用參數傳遞的方式,實現共用一個實體物件。
本文所用的代碼,也是在上一篇基礎上做修改。
1.父表單
將共用實體物件innoBERT作為子表單建構函式的參數。代碼如下“修改此行”部分。
if (subFormPPGTx[i] == null || subFormPPGTx[i].IsDisposed) { subFormPPGTx[i] = new SubFormPPG(innoBERT, i);//修改此行 subFormPPGTx[i].Text = formTitle; subFormPPGTx[i].Name = formName; //subFormPPGTx[i].Tag = i; subFormPPGTx[i].SendToParent += new SubFormPPG.SendFun(RecvInfo); subFormPPGTx[i].Show(this); } else { subFormPPGTx[i].WindowState = FormWindowState.Normal; subFormPPGTx[i].Activate(); }
2.子表單
首先定義一個類欄位,然後修改子表單的建構函式,添加參數,用於接收父表單傳遞的實體物件。這樣就可以在子表單裡,調用實體物件innoBERT。
InnolightBERT innolightBERT;bool formStatus = false;private int ID;public delegate void SendFun(int number);public event SendFun SendToParent;public SubFormPPG(InnolightBERT innoBERT, int ID){ InitializeComponent(); this.innolightBERT = innoBERT;//接收對象 this.ID = ID;}
3.應用
子表單調用共用實體物件的屬性。
private void SubFormPPG_Load(object sender, EventArgs e){ this.GetPPGSetting(this.ID);}private void GetPPGSetting(int channel){ try { switch (channel) { case 0: this.comboBoxSwing.SelectedIndex = (int)innolightBERT.Tx1_Swing; break; case 1: this.comboBoxSwing.SelectedIndex = (int)innolightBERT.Tx2_Swing; break; case 2: this.comboBoxSwing.SelectedIndex = (int)innolightBERT.Tx3_Swing; break; case 3: this.comboBoxSwing.SelectedIndex = (int)innolightBERT.Tx4_Swing; break; default: return; } } catch (Exception ex) { MessageBox.Show(ex.Message); }}
以上就是 從0自學C#06--多表單共用對象的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!