0에서 C#06-다중 창 공용 대상
어떻게 하위 창과 부모 창이 같은 실체 대상을 공용하는지 실현합니까
위임 이벤트를 통해 하위 창이 부모 창을 호출하는 컨트롤을 실현했다.본고는 매개 변수로 전달하는 방식으로 하나의 실체 대상을 공용하는 것을 실현할 것이다.
본고에서 사용한 코드도 전편의 기초 위에서 수정한 것이다.
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);
}
}