C#WINFORM窗体传参的最佳实践
进入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.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.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窗体传参的最佳实践相关推荐
- 用反射通过构造函数给窗体传参
最近在项目上用到反射来调用方法用的比较多,传参包含两种方式,一种是通过变量传参,第二种是通过构造函数传参,下面分别介绍下两种方式: 先介绍几种获取实例的方法,下面描述中提到的三种方法其实都是大同小异的 ...
- 360开源的类Redis存储系统Pika的最佳实践
360DBA及基础架构团队根据360内部的Pika使用经验及社区用户的问题反馈,整理了以下这些Pika的最佳实践分享给大家. Pika最佳实践之一 在群里提问主动带上版本号能大幅度加快问题解决速度.( ...
- 上传到docker hub_在容器上构建持续部署及最佳实践初探
要想理解持续集成和持续部署,先要了解它的部分组成,以及各个组成部分之间的关系.下面这张图是我见过的最简洁.清晰的持续部署和集成的关系图. 图片来源 持续部署: 如图所示,开发的流程是这样的: 程序员从 ...
- js bind 传参、_Node.js 在企业中的应用实践集锦
Node.js 在企业中的应用实践 在和一些 Nodeer 童鞋的分享交流过程中,也会听到一些声音:"Node.js 在企业中是如何应用的?有哪些大厂在实践?",于是公众号 &qu ...
- Spring Validation最佳实践及其实现原理,参数校验没那么简单!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:六点半起床 juejin.im/post/685654110 ...
- 如何用深度学习做自然语言处理?这里有份最佳实践清单
如何用深度学习做自然语言处理?这里有份最佳实践清单 By 机器之心2017年7月26日 14:16 对于如何使用深度学习进行自然语言处理,本文作者 Sebastian Ruder 给出了一份详细的最佳 ...
- Spring Validation 最佳实践及其实现原理,参数校验没那么简单!
之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation.本文会详细介绍Spring Validation各种场景下 ...
- oclick vue 传参 函数_详解Vue计算属性和侦听属性
关注[搜狐技术产品]公众号,第一时间获取技术干货 作者介绍: 本期特邀作者:浪里行舟 Github博客2600 star作者,专注于前端领域.个人公众号:「前端工匠」,致力于打造适合初中级工程师能够快 ...
- 5万字长文:Stream和Lambda表达式最佳实践-附PDF下载
文章目录 1. Streams简介 1.1 创建Stream 1.2 Streams多线程 1.3 Stream的基本操作 Matching Filtering Mapping FlatMap Red ...
最新文章
- NFS介绍、NFS服务端配置安装配置、 NFS配置选项、 客户端的配置
- iOS10 UI设计基础教程
- 计算机行业人员的鄙视链
- 手握五大成功秘密武器
- php 计算字符串相邻最大重复数_php查找字符串出现次数的方法
- nginx html 替换,Nginx 服务内容替换功能(sub模块)
- POJ - 3565 Ants(二分图最小权匹配+KM+思维)
- 3. 机器学习中为什么需要梯度下降_机器学习中一些模型为什么要对数据归一化?...
- 基于SQL Server策略的管理-更改时评估模式
- gorm存指针数据_C语言重点——指针篇(一篇让你完全搞懂指针)
- 合理使用“搜索引擎和工具书”,提升“速度和加速度”
- Windows 7下面安装VMware、BackTrack5(BT5)、minidwep-gtk
- python和前端哪个好_web前端和python学哪个出来工资高?
- pcap流量中提取文件的五种方法
- Vue.js / Nuxt.js / uni-app - 移动端 H5 网页,在电脑 PC 上打开时居中显示(手机网页在电脑上打开后,简单粗暴防止 “界面样式“ 拉伸变形的解决方案)适用所有web项目
- 周口女子职专计算机分为哪些专业,周口女子职业中专学校
- PTA练习 Java模拟题 编程题
- 富爸爸财务自由之路——财富自由之路的七个步骤
- shopilex -中文开源网店 视频教程
- CEC-I 中华学习机使用说明与问答