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

之前用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);
            



        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现两个窗口跳转传值,可以使用以下步骤: 1. 在第一个窗口中创建一个公共变量或属性,用于存储需要传递的数据。 例如,在第一个窗口中创建一个名为“textBox1”的文本框,并将其内容存储在公共变量“data”中: ```csharp public partial class Form1 : Form { public string data; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { data = textBox1.Text; // 将textBox1中的内容存储在data中 Form2 form2 = new Form2(); form2.Show(); this.Hide(); // 隐藏第一个窗口 } } ``` 2. 在第二个窗口中创建一个公共变量或属性,用于接收从第一个窗口传递的数据。 例如,在第二个窗口中创建一个名为“label1”的标签,并将其内容设置为从第一个窗口传递的数据: ```csharp public partial class Form2 : Form { public string receivedData; public Form2() { InitializeComponent(); receivedData = ((Form1)Application.OpenForms[0]).data; // 从第一个窗口中获取data label1.Text = receivedData; // 将data显示在label1中 } private void button1_Click(object sender, EventArgs e) { Form1 form1 = new Form1(); form1.Show(); this.Hide(); // 隐藏第二个窗口 } } ``` 3. 在第一个窗口中跳转到第二个窗口,并隐藏第一个窗口。 例如,在第一个窗口中创建一个名为“button1”的按钮,当单击该按钮时,跳转到第二个窗口并隐藏第一个窗口: ```csharp private void button1_Click(object sender, EventArgs e) { data = textBox1.Text; // 将textBox1中的内容存储在data中 Form2 form2 = new Form2(); form2.Show(); this.Hide(); // 隐藏第一个窗口 } ``` 4. 在第二个窗口中跳转回第一个窗口,并隐藏第二个窗口。 例如,在第二个窗口中创建一个名为“button1”的按钮,当单击该按钮时,跳转回第一个窗口并隐藏第二个窗口: ```csharp private void button1_Click(object sender, EventArgs e) { Form1 form1 = new Form1(); form1.Show(); this.Hide(); // 隐藏第二个窗口 } ``` 通过以上步骤,就可以实现两个窗口之间的跳转和数据传递了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wenlong Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值