前回の記事では、親フォームのコントロールを呼び出すサブフォームを実現するためにイベントを委任する方法を紹介しました。この記事では、パラメーターの受け渡しを使用してエンティティ オブジェクトの共有を実現します。
この記事で使用しているコードも前回の記事をベースに修正しています。
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 - 複数のフォーム共有オブジェクトの内容です。その他の関連コンテンツについては、PHP中国語Webサイト(www.php.cn)に注目してください。