C# 通过委托实现多个窗口之间的传值

之前用qt写的时候,都有信号和槽来实现,用C#的话应该也有类似的

大概实现的是我在父窗口当中new了两个子窗口,这个两个子窗口都可以将处理完的数据传递给父窗口,并且两个子窗口通过父窗口进行通信。

C# 通过委托实现多个窗口之间的传值_第1张图片

我这就按上面窗口名称来说明代码吧

账号密码登录窗口


        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);
            



        }

你可能感兴趣的:(C#,c#,开发语言)