之前用qt写的时候,都有信号和槽来实现,用C#的话应该也有类似的
大概实现的是我在父窗口当中new了两个子窗口,这个两个子窗口都可以将处理完的数据传递给父窗口,并且两个子窗口通过父窗口进行通信。
我这就按上面窗口名称来说明代码吧
账号密码登录窗口
public delegate void SendToken(string token);
public event SendToken sendToken;
private void btnLogin_Click(object sender, EventArgs e)
{
....
sendToken(token);
}
父窗口
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();
}
商户列表窗口
public void getForm1Token(string str)
{
MessageBox.Show(str);
}