进入VS2005后,大家可以发现子窗体操作父窗体不能沿用2003下的方法:把父窗体的空间访问属性由private改为public.IDE已经把控件声明这部分代码隐藏了,所以只有采用更加对象一点的方法。

父窗体与子窗体间的参数传递我采用的步骤如下:
1 父窗体中声明一个静态的父窗体类型的临时对象
        public static frmFather frmFatherTemp;

2 父窗体构造函数中对该变量赋值

public frmFather()
        {
            InitializeComponent();
            frmFatherTemp = this;
        }

3 把要传递的参数设置为父窗体的一个属性,并设置访问器。访问其的set方法中进行了参数与父窗体控件绑定的操作。

private string testValue;
       
        public string TestValue
        {
            get
            {
                return testValue;   
            }
            set
            {
                this.testValue = value;
                this.txtFather.Text = value;
            }
        }

4 父窗体参数传递事件中对要传递的参数赋值,并打开子窗体。父窗体的工作到此结束。

this.TestValue = this.txtFather.Text;
            frmSon frm = new frmSon();
            frm.ShowDialog();

5 子窗体构造函数中设置传递参数与子窗体控件的绑定操作

public frmSon()
        {
            InitializeComponent();
            this.txtSon.Text = frmFather.frmFatherTemp.TestValue;
        }

6 子窗体回传事件中,对父窗体的临时对象的该参数属性赋值

public frmSon()
        {
            InitializeComponent();
            this.txtSon.Text = frmFather.frmFatherTemp.TestValue;
        }

ok。一切搞定!

全部代码如下:

frmFather.cs

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

namespace winFormParameterPass
{
    public partial class frmFather : Form
    {
        public static frmFather frmFatherTemp;

        private string testValue;
        
        public string TestValue
        {
            get 
            {
                return testValue;    
            }
            set 
            {
                this.testValue = value;
                this.txtFather.Text = value;
            }
        }

        public frmFather()
        {
            InitializeComponent();
            frmFatherTemp = this;
        }

        private void btnFather_Click(object sender, EventArgs e)
        {
            this.TestValue = this.txtFather.Text;
            frmSon frm = new frmSon();
            frm.ShowDialog();
        }
    }
}

frmSon.cs

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

namespace winFormParameterPass
{
    public partial class frmSon : Form
    {
        public frmSon()
        {
            InitializeComponent();
            this.txtSon.Text = frmFather.frmFatherTemp.TestValue;
        }

        private void btnSon_Click(object sender, EventArgs e)
        {
            frmFather.frmFatherTemp.TestValue = this.txtSon.Text;
            this.Close();
        }
    }
}

例子程序:
/Files/heekui/winFormParameterPass.rar

以上想法给新手们一点参考,请高手指教。

C#WINFORM窗体传参的最佳实践相关推荐

  1. 用反射通过构造函数给窗体传参

    最近在项目上用到反射来调用方法用的比较多,传参包含两种方式,一种是通过变量传参,第二种是通过构造函数传参,下面分别介绍下两种方式: 先介绍几种获取实例的方法,下面描述中提到的三种方法其实都是大同小异的 ...

  2. 360开源的类Redis存储系统Pika的最佳实践

    360DBA及基础架构团队根据360内部的Pika使用经验及社区用户的问题反馈,整理了以下这些Pika的最佳实践分享给大家. Pika最佳实践之一 在群里提问主动带上版本号能大幅度加快问题解决速度.( ...

  3. 上传到docker hub_在容器上构建持续部署及最佳实践初探

    要想理解持续集成和持续部署,先要了解它的部分组成,以及各个组成部分之间的关系.下面这张图是我见过的最简洁.清晰的持续部署和集成的关系图. 图片来源 持续部署: 如图所示,开发的流程是这样的: 程序员从 ...

  4. js bind 传参、_Node.js 在企业中的应用实践集锦

    Node.js 在企业中的应用实践 在和一些 Nodeer 童鞋的分享交流过程中,也会听到一些声音:"Node.js 在企业中是如何应用的?有哪些大厂在实践?",于是公众号 &qu ...

  5. Spring Validation最佳实践及其实现原理,参数校验没那么简单!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:六点半起床 juejin.im/post/685654110 ...

  6. 如何用深度学习做自然语言处理?这里有份最佳实践清单

    如何用深度学习做自然语言处理?这里有份最佳实践清单 By 机器之心2017年7月26日 14:16 对于如何使用深度学习进行自然语言处理,本文作者 Sebastian Ruder 给出了一份详细的最佳 ...

  7. Spring Validation 最佳实践及其实现原理,参数校验没那么简单!

    之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation.本文会详细介绍Spring Validation各种场景下 ...

  8. oclick vue 传参 函数_详解Vue计算属性和侦听属性

    关注[搜狐技术产品]公众号,第一时间获取技术干货 作者介绍: 本期特邀作者:浪里行舟 Github博客2600 star作者,专注于前端领域.个人公众号:「前端工匠」,致力于打造适合初中级工程师能够快 ...

  9. 5万字长文:Stream和Lambda表达式最佳实践-附PDF下载

    文章目录 1. Streams简介 1.1 创建Stream 1.2 Streams多线程 1.3 Stream的基本操作 Matching Filtering Mapping FlatMap Red ...

最新文章

  1. NFS介绍、NFS服务端配置安装配置、 NFS配置选项、 客户端的配置
  2. iOS10 UI设计基础教程
  3. 计算机行业人员的鄙视链
  4. 手握五大成功秘密武器
  5. php 计算字符串相邻最大重复数_php查找字符串出现次数的方法
  6. nginx html 替换,Nginx 服务内容替换功能(sub模块)
  7. POJ - 3565 Ants(二分图最小权匹配+KM+思维)
  8. 3. 机器学习中为什么需要梯度下降_机器学习中一些模型为什么要对数据归一化?...
  9. 基于SQL Server策略的管理-更改时评估模式
  10. gorm存指针数据_C语言重点——指针篇(一篇让你完全搞懂指针)
  11. 合理使用“搜索引擎和工具书”,提升“速度和加速度”
  12. Windows 7下面安装VMware、BackTrack5(BT5)、minidwep-gtk
  13. python和前端哪个好_web前端和python学哪个出来工资高?
  14. pcap流量中提取文件的五种方法
  15. Vue.js / Nuxt.js / uni-app - 移动端 H5 网页,在电脑 PC 上打开时居中显示(手机网页在电脑上打开后,简单粗暴防止 “界面样式“ 拉伸变形的解决方案)适用所有web项目
  16. 周口女子职专计算机分为哪些专业,周口女子职业中专学校
  17. PTA练习 Java模拟题 编程题
  18. 富爸爸财务自由之路——财富自由之路的七个步骤
  19. shopilex -中文开源网店 视频教程
  20. CEC-I 中华学习机使用说明与问答

热门文章

  1. 是时候不把智能手机叫做电话了:移动AI时代来临!
  2. 英国再推人工智能报告: 四方面发力打造AI强国
  3. 三本毕业后,我进入了世界五百强
  4. 北京 10 年,难说再见!
  5. 面试官:兄弟,说说 ArrayList 和 LinkedList 有什么区别
  6. Linux环境安装python3.6(APT方式)
  7. linux基础-总结题 (每日更新)
  8. [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释
  9. DataTables 表格固定栏使用方法
  10. 如何快速实现物联网行业中的实名认证