一.找了好几个,都不靠谱,不是说不靠谱,自己感觉太繁琐,根本就是本窗体的属性(对象)的传递,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窗体互传参数本质的更多相关文章

  1. AB窗体互传参数

    一.找了好几个,都不靠谱,不是说不靠谱,自己感觉太繁琐 二.父窗口传子窗口好传,有两种方法(自己认为比较简单的方法哈), 1第一种方法:在子窗口中新建一个属性:再新建一个方法,当然方法就是把属性个窗体 ...

  2. Android中Activity之间访问互传参数

    public class MainActivity extends Activity { private static final int OTHER = 1; @Override protected ...

  3. CP,SCP 命令(包括windows与linux用xshell互传)

    linux之cp/scp命令+scp命令详解 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... direct ...

  4. 【转】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% ...

  5. WPF 之 窗口间传参数

    有如下几种方式: 1) 声明个全局变量,就是App.xaml里面声明:在所有窗体里面都可以引用 Application.Current.Properties["ArgumentName&qu ...

  6. Java和JavaScript的时间互传

    原创文章,转载请注明:Java和JavaScript的时间互传 By Lucio.Yang 1.从JavaScript到Java JavaScript: function query(){ var s ...

  7. linux学习(十)find命令、Linux文件后缀名、Linux和windows文件互传

    一.和find相关的几个搜索命令,了解即可. 1.1 which [root@iZ25lzba47vZ ~]# which ls alias ls='ls --color=auto' /usr/bin ...

  8. Shell script 传参数处理(默认变量)

    变量 含义 $0:shell脚本的名字: $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 "$*" :代表"$1c$2c$3 ...

  9. C#多线程函数如何传参数和返回值

          详见网站:http://WWW.MOVIH.COM就是一个多线程爬虫系统.   C#多线程函数如何传参数和返回值 提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托 ...

随机推荐

  1. vue+element-ui upload图片上传前大小超过4m,自动压缩到指定大小,长宽

    最近项目需要实现一个需求,用户上传图片时,图片大小超过4M,长宽超过2000,需要压缩到400k,2000宽高.在git上找到一个不错的方法,把实现方法总结一下: 安装image-conversion ...

  2. HashMap闭环(死循环)的详细原因(转)

    为何出现死循环简要说明 HashMap是非线程安全的,在并发场景中如果不保持足够的同步,就有可能在执行HashMap.get时进入死循环,将CPU的消耗到100%. HashMap采用链表解决Hash ...

  3. element之table自定义表头

    1.实现效果 2.使用render-header可以自定义表头 <el-table-column prop="date" label="日期" sorta ...

  4. centos能进入命令行界面,进不了图形界面

    在开机引导界面按“e”, 找到linux16开头的一行,定位到ro然后修改ro为rw,并添加:init=/sysroot/bin/sh 使用ctrl x进入安全模式. 使用命令:chroot /sys ...

  5. 【2019 CCPC 秦皇岛】J - MUV LUV EXTRA

    原题: 题意: 给你两个整数a和b,再给你一个正小数,整数部分忽略不计,只考虑小数部分的循环节,对于所有可能的循环节,令其长度为l,在小数部分循环出现的长度为p,最后一个循环节允许不完整,但是缺少的部 ...

  6. python+Appium自动化:toast定位

    Toast简介 Toast是一种简易的消息提示框. 当视图显示给用户,在应用程序中显示为浮动.和Dialog不一样的是,它永远不会获得焦点,无法被点击. 用户将可能是在中间键入别的东西.Toast类的 ...

  7. LaTeX新人使用教程[转载]

    LaTeX新人教程,30分钟从完全陌生到基本入门 by Nan 对于真心渴望迅速上手LaTeX的人,前言部分可以跳过不看. 本教程面向对LaTeX完全无认知无基础的新人.旨在让新人能够用最简单快捷的方 ...

  8. JavaScript中的类(Class)

    基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到的,新的class写法是让对象原型的写法更加清晰,更像面向对象编程的语法而已. ES5生成例对象传统方法是通过构造函 ...

  9. hbuilderX创建vue项目之添加router路由(前端萌新)

    作为一个刚刚接触前端不久的新人来说,熟悉了一种目录结构或者项目创建方法以后,恨不得一辈子不会变! 可是人要生活,就要工作,既然是打工,当然要满足雇佣者的要求. 今天我来说说 hbuilderX 这个开 ...

  10. springboot2.0入门(二)-- 基础项目构建+插件的使用

    一.idea中新建第一个HelloWorld项目 点击next: 下一步 在这里可以选择我们需要依赖的第三方软件类库,包括spring-boot-web,mysql驱动,mybatis等.我们这里暂时 ...