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

总结

目录
相关文章
|
Shell C++ C语言
38【WinForm】WinForm常见窗体技术汇总
- 窗体调用外部程序与渐变窗体 - 按回车键跳转窗体中的光标焦点 - 剪切板操作
79 0
|
API Windows 容器
WinForm——窗体总结
WinForm——窗体总结
247 0
WinForm——窗体总结
|
机器学习/深度学习 数据可视化 程序员
WinForm控件属性大全
WinForm控件属性大全
442 0
|
前端开发 C#
WPF 窗体显示最前端
原文:WPF 窗体显示最前端 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jjx0224/article/details/8782845 ...
1160 0
Winform窗体间传值(委托)
最近工作室为了应付 比赛 赶了一个排课系统 我负责排课的功能 写了一个星期终于赶出来了 用到了Winform窗体间传值。
993 0