Form2向Form1传值





        private Form1 form1;//定义一个类型为Form1类型的字段,用于存储传递过来的Form对象

        public void SetTextValue(object sender, EventArgs e)//sender 事件源,e包含事件数据的类的基类的对象

        {

            if (sender is Form1)

            {

                form1 = sender as Form1;

            }

            MyEventArgs me = (MyEventArgs)e;

            txtNum2.Text=me.Text;

        }

        public event EventHandler eh2;//定义一个系统事件类型的事件





        private void btnBack_Click(object sender, EventArgs e)

        {

            MyEventArgs me = new  MyEventArgs();

            me.Text = txtNum2.Text;





            eh2 += new EventHandler(form1.SetTextVaule);//注册事件

            if (eh2 != null)

            {

                eh2(this,me);//执行事件

            }

            this.Close();

        }

    }





[注]:

1 为什么要定义MyEventArgs?

要通过事件传值,需要定义事件,定义事件需要事件源,包含事件数据的类,而引用系统提供的事件时,系统事件里仅有

    // 摘要:

        //     表示没有事件数据的事件。

        public static readonly EventArgs Empty;





        // 摘要:

        //     初始化 System.EventArgs 类的新实例。

        public EventArgs();

两项,当需要通过事件传递额外的值则不能满足,此时需要自己定义事件类,而此时又容易报

------------------

"无法将类型“System.EventArgs”转换为“_02_事件窗体传值.MyEventArgs”

委托“System.EventHandler”有一些无效参数

参数 2: 无法从“_02_事件窗体传值.MyEventArgs”转换为“System.EventArgs”

------------------

的错误,所以此时为了解决如上问题,可让自定义事件类继承系统定义事件类.

public class MyEventArgs:EventArgs

    {

       public string Text { get; set; }

    }

winform中通过事件实现窗体传值思路【待修改】的更多相关文章

  1. Winform中如何实现父窗体传递数据到子窗体并刷新子窗体

    原理:利用委托和事件,本文将以图文并茂的例子讲述,告诉我们So Easy --------------------------------------------------------------- ...

  2. Winform中利用委托实现窗体之间的传值

    点击打开按扭,打开传输值窗体 public partial class Form1 : Form { public Form1() { InitializeComponent(); } public ...

  3. winform中使用委托进行窗体之间的传值

    一.传统的方式 创建一个公共数据资源类,用于存储窗体2的TextBox的值: public class ComValue { public static string Txtvalue { get; ...

  4. Winform中如何实现子窗体刷新父窗体

    原理:利用委托和事件,本文将以图文并茂的例子讲述,告诉我们So Easy --------------------------------------------------------------- ...

  5. WinForm中的事件触发机制学习

    在一个Form窗体中拖个按钮,双击后系统自动生成代码: private void button1_Click(object sender, EventArgs e) { } 同时在窗体的Initial ...

  6. winform中的Datagridview控件与List同步修改

    Winform的datagridview是个很强大的控件,可用datatable, List等型的数据与之绑定显示. 可惜的是,绑定的LIst不能同步更新. 估计是为了改进List不能同步更新的问题, ...

  7. CS中委托与事件的使用-以Winform中跨窗体传值为例

    场景 委托(Delegate) 委托是对存有某个方法的引用的一种引用类型变量. 委托特别用于实现事件和回调方法. 声明委托 public delegate int MyDelegate (string ...

  8. Winform开发之窗体传值

    Winform的窗体之间的数据传递是开发的必备技术,下面介绍几种典型的传值方法 1.构造函数传值,但这种方法是单向的(推荐) 上代码,先传值 private void button2_Click(ob ...

  9. WinForm开发,窗体显示和窗体传值相关知识总结

    主窗体中代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void b ...

随机推荐

  1. 2016.6.20 maven更改repository的位置

    默认位置为${userhome}/.m2/repository: 修改位置: 在setting,xml中更改 这个时候再看eclipse的设置,已经自动更改了.因为它是读取setting.xml中的数 ...

  2. DevExpress控件之TreeList

    基于v18.1 使用AppendNode方法手动赋值时,首先要添加treeListColumn 默认样式                                     修改后的样式   1 ...

  3. TSRC挑战赛:WAF之SQL注入绕过挑战实录

    转自腾讯 博文作者:TSRC白帽子 发布日期:2014-09-03 阅读次数:1338 博文内容: 博文作者:lol [TSRC 白帽子] 第二作者:Conqu3r.花开若相惜 来自团队:[Pax.M ...

  4. 算法-search

    O(big o) 是上限,是我们关注的算法的时间复杂度.数据量大,数据量涨一千倍,lgn的算法就是 耗费的时间就是10倍,o(n)就是一千倍,o(n2)就是一百万倍的差距 例一:Sequential ...

  5. Hessian原理与程序设计

     Hessian是比較经常使用的binary-rpc.性能较高,适合互联网应用.主要使用在普通的webservice 方法调用.交互数据较小的场景中.hessian的数据交互基于http协议,通常he ...

  6. Oracle TNS路径

    修改tnsnames.oRA,监听文件   Oracle TNS路径 G:\Oracle\product\11.2.0\client_1\network\admin\tnsnames.oRA

  7. VueJS绑定缩写:可省略v-on、v-bind

    v-bind 缩写 Vue.js 为两个最为常用的指令提供了特别的缩写: <!-- 完整语法 --> <a v-bind:href="url"></a ...

  8. robot framework selenium2library定位

    进行页面元素操作,最麻烦的莫过于元素定位了,经常提示element is not visible 或者element is not exist 下面介绍常见的定位方法和定位中的问题 1 使用name和 ...

  9. Java方法存在于哪一区

    Java运行时的数据区包括:(其中前两个是线程共享的) 1.方法区(Method Area)存储已被虚拟机加载的类信息.常量.静态变量.即编译器编译后的代码等数据 2.堆(Heap)存放对象实例,几乎 ...

  10. erlang的undefined macro 'MODULE',头一行编译通不过的问题

    前言:对于erlang的编译有很多方式,rebar,makefile文件 还是对于单个文件的erlc编译等,但不管何种方式,一个模块的第一行就编译不过去,实在让人纠结... 1)问题上述: 在技术交流 ...