Cuando usé Qt para escribir antes, tenía señales y ranuras para implementarlo. Si uso C#, debería haber algo similar.
Lo que probablemente logré es que creé dos nuevas ventanas secundarias en la ventana principal. Ambas ventanas secundarias pueden pasar los datos procesados a la ventana principal y las dos ventanas secundarias se comunican a través de la ventana principal.
Explicaré el código según el nombre de la ventana anterior.
Ventana de inicio de sesión de cuenta y contraseña
public delegate void SendToken(string token);
public event SendToken sendToken;
private void btnLogin_Click(object sender, EventArgs e)
{
....
sendToken(token);
}
ventana principal
public delegate void SendMerchantFormToken(string msg); // 定义转发消息的委托
public event SendMerchantFormToken sendMerchantFormToken; // 定义事件
public MerchantForm merchantForm;
public LoginForm loginForm;
//打开登录界面
void openNewForm()
{
loginForm = new LoginForm();
loginForm.BringToFront();
loginForm.MaximizeBox = false;//最大化
loginForm.Text = "账号密码登录";
loginForm.sendToken += new LoginForm.SendToken(receiveloginFormToken); // 订阅子窗体1的send事件
loginForm.TopMost = true;//置于顶层
loginForm.StartPosition = FormStartPosition.CenterScreen;
loginForm.Show();
merchantForm = new MerchantForm();
merchantForm.BringToFront();
merchantForm.MaximizeBox = false;//最大化
merchantForm.Text = "商户选择";
merchantForm.TopMost = true;//置于顶层
merchantForm.StartPosition = FormStartPosition.CenterScreen;
merchantForm.Hide();
sendMerchantFormToken += new SendMerchantFormToken(merchantForm.getForm1Token);
}
//是委托代理的方法,也就是要最终执行的方法,需要定义并实现
private void receiveloginFormToken(string msg)
{
sendMerchantFormToken(msg);
merchantForm.Show();
}
Ventana de lista de comerciantes
public void getForm1Token(string str)
{
MessageBox.Show(str);
}