37【WinForm】WinForm窗体传值,复杂数据

简介: 窗体间共有字段的传递

前言


一、窗体间共有字段的传递

1、效果

在这里插入图片描述

2、界面设计

在这里插入图片描述
在这里插入图片描述

3、代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 共有字段传递
{
    public partial class Form1 : Form
    {
        Form2 f2;
        public string Msg
        {
            get 
            {
                return this.textBox1.Text.Trim();
            }
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            f2 = new Form2(this);
            f2.Show();
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 共有字段传递
{
    public partial class Form2 : Form
    { 
        public Form2()
        {
            InitializeComponent();
        }

        public Form2(Form1 f1)
        {
            InitializeComponent();
            this.label1.Text = f1.Msg;
        }
    }
}

二、窗体间通过构造函数传值

1、效果

在这里插入图片描述

2、界面设计

在这里插入图片描述
在这里插入图片描述

3、代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 构造传递
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)   
        {
            Form2 f2 = new Form2(this.textBox1.Text.Trim());
            f2.Show();
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 构造传递
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public Form2(string msg)
        {
            InitializeComponent();
            this.label1.Text = msg;
        }
    }
}

三、窗体间通过委托事件传值

1、效果

在这里插入图片描述

2、界面设计

在这里插入图片描述
在这里插入图片描述

3、代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 委托与事件传递
{
    public delegate void selectChangedHandler(string s);

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnCallForm2_Click(object sender, EventArgs e)
        {
            CallObject co = new CallObject();
            co.selectChangedEvent+=new selectChangedHandler(co_selectChangedEvent);
            Form2 f2 = new Form2(co);

            f2.ShowDialog();
            txtEventResult.Text = "Form2传的信息:" + co.callMessage;
        }

        public void co_selectChangedEvent(string s)
        {
            this.txtF2Select.Text = s;
        }
    }

    public class CallObject
    {
        public string callMessage = "";
        public event selectChangedHandler selectChangedEvent;

        public void callEvent(string s)
        {
            this.selectChangedEvent(s);
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 委托与事件传递
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private CallObject co;
        public Form2(CallObject cov):this()
        {
            this.co = cov;
        }

        private void rb_A_CheckedChanged(object sender, EventArgs e)
        {
            co.callEvent("A");
        }

        private void rb_B_CheckedChanged(object sender, EventArgs e)
        {
            co.callEvent("B");
        }

        private void rb_C_CheckedChanged(object sender, EventArgs e)
        {
            co.callEvent("C");
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            this.co.callMessage = this.txtMessgae.Text.Trim();
            this.Close();
        }
    }
}

总结

目录
相关文章
|
C# Android开发 虚拟化
C# 一分钟浅谈:MAUI 跨平台移动应用开发
.NET MAUI 是 Microsoft 推出的跨平台框架,支持 Windows、macOS、iOS 和 Android。本文从基础概念入手,探讨 MAUI 的常见问题、易错点及解决方案,并通过代码示例详细说明。涵盖平台特定代码、XAML 语法、数据绑定、性能优化和调试技巧等内容,帮助开发者更好地掌握 .NET MAUI。
1146 55
|
10月前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
9月前
|
物联网 数据处理 C#
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据。在自动化、物联网以及工业控制行业中,上位机开发是一项重要的技能。本教程主要介绍使用C#进行上位机开发,重点在于串口通信和数据处理。
1824 82
|
Ubuntu Linux Docker
Linux ubuntu 安装搭建DooTask
Linux ubuntu 安装搭建DooTask
361 1
|
SQL 数据库
SQL Server 还原 备份集中的数据库备份与现有的 'XXX' 数据库不同
SQL Server 还原 备份集中的数据库备份与现有的 'XXX' 数据库不同
1585 0
|
C# Windows
c#学习系列相关之多线程(三)----invoke和begininvoke
c#学习系列相关之多线程(三)----invoke和begininvoke
1840 0
|
机器学习/深度学习 人工智能 Java
【AI for Science】量子化学:分子属性预测-第2次打卡-特征工程baseline上分
【AI for Science】量子化学:分子属性预测-第2次打卡-特征工程baseline上分
|
安全 程序员
【面向对象语言三大特性之 “继承”】(一)
【面向对象语言三大特性之 “继承”】(一)
260 0
|
监控 安全 Java
Spring JDBC-事务管理中的多线程问题
Spring JDBC-事务管理中的多线程问题
312 0