父窗体 子窗体 传值

子窗体和父窗体双向传值——C#窗体传值方法总结 简介  在很多场景下,我们的程序需要完成窗体间的传值功能,有时候是父窗体→子窗体单向传值、子窗体→父窗体传值甚至是,也有时候我们需要父窗体⇆子窗体双向传值。   在本文中主要介绍一些能够实现双向传值的方法,能够双向传值的方法也能够实现单向传值。   本文的所有源码都可以在GitHub上下载。      本文介绍的方法仅限于我自己知道并且实现过的,我相信还有很多我并不知道的方法,因此也许在很多 阅读详情

本次示例效果如下:
Form1为父窗体(包含textBox1、button1)
Form2为子窗体(包含textBox2、button2)

父窗体给子窗体传值
==================
1.点击Form1的button1 打开Form2
  父窗体给子窗体传值 可以调用重载子窗体的构造函数 直接传入相关数值

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

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2(this.textBox1.Text);
            frm2.Show();
        }
    }

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

        public Form2(string strTextBox1Text)
        {
            InitializeComponent();
            this.textBox2.Text = strTextBox1Text;
        }
    }

2.点击Form1的button1 打开Form2
  并调用子窗体Form2的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2
 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.TextBox2Text = this.textBox1.Text;
            frm2.Show();
        }
    }

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

        public string TextBox2Text
        {
            set { this.textBox2.Text = value; }
            get { return this.textBox2.Text; }
        }      
    }
 
3.点击Form1的button1 打开Form2
  在Form2_Load调用父窗体Form1的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2

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

        public string TextBox1Text
        {
            set { this.textBox1.Text = value; }
            get { return this.textBox1.Text;  }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.Show(this);//或 frm2.ShowDialog(this);

            ////或者
            //Form2 frm2 = new Form2();
            //frm2.Owner = this;
            //frm2.Show();//或 frm2.ShowDialog();
        }
    }
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            Form1 frm1 = (Form1)this.Owner;
            this.textBox2.Text = frm1.TextBox1Text;
        }
    }

子窗体给父窗体传值
==================
4.点击Form1的button1 打开Form2
  再点击Form2的button2
    在button2_Click事件中 通过this.Owner将Form2的textBox2的值设置给Form1的textBox1
    并关闭Form2

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

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.Show(this);//或 frm2.ShowDialog(this);

            ////或者
            //Form2 frm2 = new Form2();
            //frm2.Owner = this;
            //frm2.Show();//或 frm2.ShowDialog();
        }
    }

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

        private void button2_Click(object sender, EventArgs e)
        {
            Form1 frm1 = (Form1)this.Owner;
     //注意 如果textBox1是放在panel1中的 则先找panel1 再找textBox1
            ((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;
            this.Close();
        }
    }

5.点击Form1的button1 打开Form2
  再点击Form2的button2
    在button2_Click事件中 通过this.Owner及调用父窗体Form1的公开属性或方法
                          将Form2的textBox2的值设置给Form1的textBox1
    并关闭Form2
 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public string TextBox1Text
        {
            set { this.textBox1.Text = value; }
            get { return this.textBox1.Text;  }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.Show(this);//或 frm2.ShowDialog(this);

            ////或者
            //Form2 frm2 = new Form2();
            //frm2.Owner = this;
            //frm2.Show();//或 frm2.ShowDialog();
        }
    }

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

        private void button2_Click(object sender, EventArgs e)
        {
            Form1 frm1 = (Form1)this.Owner;
            frm1.TextBox1Text = this.textBox2.Text;
            this.Close();
        }
    }

C# Winform 窗体传值 利用委托 子窗体传值给父窗体 利用委托进行窗体传值。     父窗体:Form1   子窗体:Form2   点击Form1,弹出Form2,点击按钮返回值给Form1 首先在Form2中定义委托和事件: //声明委托 和 事件 public delegate void TransfDelegate(String value); public partial class Form 阅读详情

相关推荐

c#父窗体子窗体之间传值

c#窗体传值 1. 父窗体向子窗体传值 父窗体Form1程序 //使其成为主窗体Form1的一个属性, private string text; public string Text { get { return text; } set { text = value; } } ...

DENGXI1997的博客 1997

C# WinForm 父窗体 子窗体 传值

本次示例效果如下: Form1为父窗体(包含textBox1、button1) Form2为子窗体(包含textBox2、button2) 父窗体给子窗体传值 ================== 1.点击Form1的button1 打开Form2   父窗体给子窗体传值 可以调用重载子窗体的构造函数 直接传入相关数值     public partial class Form1 :...

weixin_34381666的博客 377

WinForm窗体间传值\(C#)

WinForm窗体间传值\(C#)

【WinForm】—窗体之间传值的几种方式

前言     小编最近维护一个Winfrom窗体,是项目中CS端的主窗体,很多子窗体需要从主窗体获取值,同时子窗体还需要给主窗体回传值,下面来给大家介绍一下。 正文     本文中以主窗体为frmMain,子窗体为frmGroup ,两窗体之间的传值来做示例。 方式一: 使用公共静态变量传值 主窗体frmMa...

全力奔跑,梦在彼岸 3万+

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 939

【windows】【系统还原】亦是美kms执行一键关闭defender 之后,windows defender 被卸载了,无论如何都打不开

还是执行 都没有明显效果 那么,我最后是怎么解决得呢? 一、打开控制面板(任务栏搜索kzmb)

weixin_41899098的博客 6908

WinForm中父窗体与子窗体之间的相互传值

在WinForm开发中,窗体之间的相互传值是一项基本操作,本文就来介绍一下实现方法。

HerryDong的博客 7861

避坑指南:ESP32S3驱动INMP441麦克风时的常见硬件冲突与解决方案

本文详细解析了ESP32S3驱动INMP441麦克风时常见的硬件冲突问题,包括GPIO资源冲突、电源噪声、I2S时钟同步等,并提供了实用的解决方案和优化策略。通过实测数据和代码示例,帮助开发者快速排查和解决音频设备开发中的疑难问题,提升系统稳定性和音频质量。

embedding5hiker的博客 942

winform c# 窗体传值几种方式

C#跨窗体传值的几种方法分析(很详细) 创建一个Winform窗体应用程序项目,然后添加一个Form2窗体。 在Form1和Form2中各添加一个textBox和button: 单击Form1中的button1,弹出Form2,然后要做的就是在Form1中的textBox1和Form2中的textBox2中传值。 为了方便起见,将Form1称作父窗体,将Form2称作子窗体。 相对来说,将父窗体的值传到子窗体较为容易实现。下面分别进行说明。 一、父窗体传值给子窗体。 方法1:通过Form类构造方法的重载

sd6275832ght的博客 4748

保姆级教程:在RK3568上调试RGMII网口,从设备树到PHY驱动的完整避坑指南

本文提供RK3568开发板上RGMII网口调试的完整指南,涵盖硬件检查、设备树配置、驱动加载及性能优化。通过详细步骤和实战案例,帮助开发者避开常见陷阱,确保以太网功能稳定运行,特别关注PHY驱动和MDIO总线的调试技巧。

weixin_26821003的博客 322

安装了anaconda,pycharm导入numpy时提示没有该包(模块)?

**问题详情:**我安装了anaconda,在利用Pycharm学习numpy这个库的时候,导入numpy这个包的时候提示我没有nummpy这个模块:No module named numpy.如下图所示。 应该说安装了Anaconda,里边就自带了numpy这个库,就应该能够使用。我一个新手怎么搞得懂呢?于是网上查了查找到了一个解决办法,说是我项目的解释器应该设置为Anaconda安装目录下的python.exe,而不应该是系统自带的:https://blog.youkuaiyun.com/aanndd77/art

qq_39820505的博客 1万+

子窗体传值给父窗体可以通过函数传值

子窗体传值给父窗体可以通过函数传值1.htm 父窗体代码function toUrl(){window.open("2.htm","_blank");}function getvalue(a){ Form1.Text1.value=a; }2.htm 子窗体function goBack(){window.opener.get

源由心生 1565

保姆级教程:用STM32H743+TJA1042T玩转FDCAN,CubeMX配置1M/5M双速率通信(附完整代码)

本文提供STM32H743与TJA1042T实现FDCAN双速率通信的保姆级教程,详细讲解CubeMX配置1M/5M双速率通信的全过程,包括硬件连接、时钟树配置、过滤器设置及中断管理,并附完整代码示例,助力开发者快速掌握FDCAN高速通信技术。

weixin_30698297的博客 473

WPF 父窗体向子窗体传值,子窗体如何接收

构造函数传值:适用于在子窗体初始化时即需使用的数据。公共属性传值:适用于初始化后需设置的数据。事件传值:适用于子窗体操作后将结果传递回父窗体的场景。根据具体的需求和应用场景,选择适合的方法来实现父窗体和子窗体之间的传值。

战族狼魂的博客 1176

DICOM三维重建:基于VTK实现三种面绘制算法

版本:VS2019、VTK9.0.1 #define vtkRenderingCore_AUTOINIT 3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2) #define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL2) #include "vtkDICOMImageReader.h" #include "vtkRenderWindowInteractor.h" #i

一直在笑的博客 5923

教师模型与学生模型:知识蒸馏的核心概念

知识蒸馏,教师模型,学生模型,模型压缩,迁移学习,深度学习 1. 背景介绍 深度学习模型在图像识别、自然语言处理等领域取得了显著的成就,但其巨大的模型规模和高昂的计算成本限制了其在资源有限的设备上的部署。知识蒸馏(Knowledge Distillation)作为一种模型压缩技术,旨

AI架构师小马 2772

C#简单实现子窗体向父窗体传值的方法

C# 子窗体与父窗体之间几种传值的方式 https://blog.youkuaiyun.com/yuekunge/article/details/9171301 C# 委托和事件,简单示例说明问题 https://www.cnblogs.com/hjsstudio/p/9816126.html C#简单实现子窗体向父窗体传值的方法 委托方法=>子窗体 public event A...

qq_18932003的博客 6799

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

子窗体传值到父窗体

第一种:Open    1. 通过Opener方法调用父窗体方法传值         <img id="Code_Closed_Image_153958" style="display: none;" onclick="function onclick(){this.style.display=none; document.getElementById(Code_Clos

2430

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C#中实现父窗体向子窗体传值和子窗体向父窗体传值​​​​​​​

C#中实现父窗体向子窗体传值和子窗体向父窗体传值 感谢这篇博文!

larry1648637120的博客 963

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

窗体之间传值、父窗体控制子窗体

如何在窗体之间传值   1.可以使用构造静态类作为“中间件” static class Record { //静态类里存放需要共享的值 }   2.可以自定义一个窗体构造函数,达到传值的目的 //定义要传递的值 private int id; private string name; //自己写一个构造函数的重载 public frm...

diaolunong7948的博客 161

js子窗体传值给父窗体

子父窗体传值:window.opener.document.getElementByID("文本框的ID").value="434"; 或者是:window.opener.document.getElmenstByName("文本框的名字")[0].value="6767";   下面是一个例子:  父窗体代码 function toUrl() {    window.open("c

jingmeifeng的专栏 580

父窗体向子窗体传值

1、父窗体: C# code ItemTemplate> asp:LinkButton ID="LinkButton5" runat="server" ForeColor="#000066">查看asp:LinkButton> asp:Label ID="Label2" runat="se

小猪的专栏 647
上一篇: js精华
下一篇: 获取第n行数据
fisea
博客等级 码龄19年 40粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值