AB窗体互传参数本质
一.找了好几个,都不靠谱,不是说不靠谱,自己感觉太繁琐,根本就是本窗体的属性(对象)的传递,1实例化2把实例化后的窗体属性=本窗体的对象
二。传递的的时候都是在互相引用的时候传递,推荐的个人认为最简单的:
1父传子,直接在子窗体的构造函数中传递(当然你也可以在的父传子的时候在父窗体中新建属性,个人认为比较麻烦,然后你再实例化父窗体呵呵,既然子窗体有现成的初始化程序为什么不用呢)
2子传父窗口,也是在引用的时候,但要在子窗体中新建属性,这属性的传递有两个时间
1,父窗体中实例化子窗体,然后直接读取子窗体的属性,即子窗体不出现(意义不大)
2父窗体中实例化子窗体,子窗体显示,输入参数,然后传给父窗体,这又有两个时间
第一个时间:子窗体不关闭传递,需要添加触发事件,比如另外加个按钮,有人说CHANGED事件有人说委托等等(个人认为这种情况少),这时候相当于你在子窗口中向父窗口传参数,你要实例化父窗口,还要在父窗口中建立set父窗口的属性参数,相当于,你把子窗口又变成了父窗口------没意义----微软已经提供了父窗口弹出窗口的控制函数子窗体的”.showdialog()
第二时间关闭的时候就直接传递过来这又有两种情况你可以在主窗体中添加if(“子窗体的”.showdialog()=dialogresult.ok)来判断(反正必须有事件触发),第二时间和子窗口不关闭传递差不多
总结:主要是子传父,微软已经提供了在父窗口得到子窗口关闭后的传递参数的方法,你就用吧,不要再弄什么触发事件了(除非你另有用途当我没说)
下面附一些代码直接考的自己琢磨去吧呵呵
Form1的代码: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace WindowToWindow
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
if (frm2.DialogResult == DialogResult.OK)
{
textBox1.Text = frm2.tt;
frm2.Close();
}
} private void Form1_Load(object sender, EventArgs e)
{ }
}
} Form2的代码: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace WindowToWindow
{
public partial class Form2 : Form
{
public string tt
{
get { return textBox1.Text; }
}
public Form2()
{
InitializeComponent();
} private void Form2_Load(object sender, EventArgs e)
{ } private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
}
}
AB窗体互传参数本质的更多相关文章
- AB窗体互传参数
一.找了好几个,都不靠谱,不是说不靠谱,自己感觉太繁琐 二.父窗口传子窗口好传,有两种方法(自己认为比较简单的方法哈), 1第一种方法:在子窗口中新建一个属性:再新建一个方法,当然方法就是把属性个窗体 ...
- Android中Activity之间访问互传参数
public class MainActivity extends Activity { private static final int OTHER = 1; @Override protected ...
- CP,SCP 命令(包括windows与linux用xshell互传)
linux之cp/scp命令+scp命令详解 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... direct ...
- 【转】windows和linux间共享互传文件
原文:http://blog.guorunmin.cn/2015/09/16/windows%E5%92%8Clinux%E9%97%B4%E5%85%B1%E4%BA%AB%E4%BA%92%E4% ...
- WPF 之 窗口间传参数
有如下几种方式: 1) 声明个全局变量,就是App.xaml里面声明:在所有窗体里面都可以引用 Application.Current.Properties["ArgumentName&qu ...
- Java和JavaScript的时间互传
原创文章,转载请注明:Java和JavaScript的时间互传 By Lucio.Yang 1.从JavaScript到Java JavaScript: function query(){ var s ...
- linux学习(十)find命令、Linux文件后缀名、Linux和windows文件互传
一.和find相关的几个搜索命令,了解即可. 1.1 which [root@iZ25lzba47vZ ~]# which ls alias ls='ls --color=auto' /usr/bin ...
- Shell script 传参数处理(默认变量)
变量 含义 $0:shell脚本的名字: $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 "$*" :代表"$1c$2c$3 ...
- C#多线程函数如何传参数和返回值
详见网站:http://WWW.MOVIH.COM就是一个多线程爬虫系统. C#多线程函数如何传参数和返回值 提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托 ...
随机推荐
- LLVM使用其他Pass的结果
之前的工作一直集中在clang中,最近有点空闲时间,又重新熟悉了一下Pass的书写过程.(参考LLVM CookBook和http://llvm.org/docs/WritingAnLLVMPass. ...
- 使用nodejs实现OData的batch操作在Marketing Cloud里读取contact信息
我们先来看看Marketing Cloud系统里的contact信息: 一共1218374条数据. 我们用如下的nodejs代码通过OData来获取这些数据: var request = requir ...
- ST3 C程序自动补全
参考: http://www.cnblogs.com/heleifz/p/3404600.html http://www.cnblogs.com/By-ruoyu/p/4687196.html htt ...
- 使用python下载图片(福利)
刚学python 没多久, 代码处处是漏洞,也希望各位大佬理解一下 爬出来的图片... 使用的 是 https://www.tianapi.com/ 接口下的 美女图片... (需要自己注册一个账号 ...
- Spark学习(4)----ScalaTest
一.例子: 1.一个简单例子:https://www.jianshu.com/p/ceabf3437dd7 2.Funsuite例子:https://www.programcreek.com/scal ...
- iview 表单验证不通过问题?
项目需要,需要怂iview..使用一段时间感觉跟elementUI用起来差不多很方便.使用过程中遇到表单验证问题,如何避免在验证过程中偶尔出现验证不通过的异常情况? <1>:给 <F ...
- 按照教程自动安装RFNoC时.在使用pip安装pybombs时出现报错,解决办法
$ sudo apt-get install git $ sudo apt-get install python-setuptools python-dev python-pip build-esse ...
- Prim算法和Kruskal算法介绍
一.Prim算法 普利姆(Prim)算法适用于求解无向图中的最小生成树(Minimum Cost Spanning Tree).下面是Prim算法构造最小生成树的过程图解. ...
- mysql你问我答
1.尊敬的先生,请您谈谈mysql数据库的引擎 数据库中的表设定了什么存储引擎,那么该表在数据存储方式.数据更新方式.数据查询性能以及是否支持索引等方面就会有不同的“效果”. mysql引擎大致分两类 ...
- EXE中释放DLL中分配的内存
在DLL中分配的内存,如果到其调用者中释放,可能会出现CRASH的情况,其原因在于: 在DLL中的Code Generation如果是采用了MT(静态加载LIBCRTD.LIB)在该库中维护了一个al ...