winform中通过事件实现窗体传值思路【待修改】
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中通过事件实现窗体传值思路【待修改】的更多相关文章
- Winform中如何实现父窗体传递数据到子窗体并刷新子窗体
原理:利用委托和事件,本文将以图文并茂的例子讲述,告诉我们So Easy --------------------------------------------------------------- ...
- Winform中利用委托实现窗体之间的传值
点击打开按扭,打开传输值窗体 public partial class Form1 : Form { public Form1() { InitializeComponent(); } public ...
- winform中使用委托进行窗体之间的传值
一.传统的方式 创建一个公共数据资源类,用于存储窗体2的TextBox的值: public class ComValue { public static string Txtvalue { get; ...
- Winform中如何实现子窗体刷新父窗体
原理:利用委托和事件,本文将以图文并茂的例子讲述,告诉我们So Easy --------------------------------------------------------------- ...
- WinForm中的事件触发机制学习
在一个Form窗体中拖个按钮,双击后系统自动生成代码: private void button1_Click(object sender, EventArgs e) { } 同时在窗体的Initial ...
- winform中的Datagridview控件与List同步修改
Winform的datagridview是个很强大的控件,可用datatable, List等型的数据与之绑定显示. 可惜的是,绑定的LIst不能同步更新. 估计是为了改进List不能同步更新的问题, ...
- CS中委托与事件的使用-以Winform中跨窗体传值为例
场景 委托(Delegate) 委托是对存有某个方法的引用的一种引用类型变量. 委托特别用于实现事件和回调方法. 声明委托 public delegate int MyDelegate (string ...
- Winform开发之窗体传值
Winform的窗体之间的数据传递是开发的必备技术,下面介绍几种典型的传值方法 1.构造函数传值,但这种方法是单向的(推荐) 上代码,先传值 private void button2_Click(ob ...
- WinForm开发,窗体显示和窗体传值相关知识总结
主窗体中代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void b ...
随机推荐
- 2016.7.12 Table configuration with catalog null, schema public, and table globalpage did not resolve to any tables(疑)
在eclipse中运行mybatis的generator插件时,出现如下错误提示: Generation Warnings Occured:Table configuration with catal ...
- android listView 滑动载入数据 该数据是服务端获取的
package com.sunway.works.applycash; import java.util.ArrayList; import java.util.Calendar; import ja ...
- Cocos2d-x中Vector<T>容器以及实例介绍
Vector<T> 是Cocos2d-x 3.x推出的列表容器,因此它所能容纳的是Ref及子类所创建的对象指针,其中的T是模板,表示能够放入到容器中的类型,在Cocos2d-x 3.x中T ...
- 如何在VS2010中添加ActiveX控件及使用方法
方法1: 1.首先在在项目上面右击添加类,如下图所示: 2.点击添加ActiveX控件中的MFC类 3.找到需要添加的ActiveX类. 4.点击完成即可. 5.此时转到资源视图,打开如下视图.可能工 ...
- Maven零散笔记——配置Nexus
安装&配置Nexus 解压后,应该获得如下目录结构: nexus-2.0.6是nexus服务主目录 sonatype-work是真正的仓库,同时包含了nexus的配置,如定时任务.用户配置等 ...
- UML--组件图,部署图
组件图用于实现代码之间的物理结构,详细来说,就是实现代码交互.通过接口,将不同的软件,程序连接在一起. [理解] 1.组件的定义相当广泛,包含:源码,子系统,动态链接库,Activex控件. 2.组件 ...
- MySQL数据库 常用命令
1.MySQL常用命令 create database name;创建数据库 use databasename;选择数据库 drop database name 直接删除数据库,不提醒 show ta ...
- Apc缓存Opcode(转)
1.PHP执行 PHP的运行阶段也分成三个阶段: Parse.语法分析阶段. Compile.编译产出opcode中间码. Execute.运行,动态运行进行输出. ...
- org hibernate querytimeoutexception
起因 在做Hibernate批量插入时,出现这个错误org.hibernate.QueryTimeoutException: 错误原因是表空间的容量不足,需要加大空间容量:那首先想到的是应该查询其容量 ...
- 本地filezilla&servervsftp搭配使用
环境:本地ubuntu系统&serverubuntu系统 本地安装filezilla apt-get install filezilla '安装filezilla filezilla '执行 ...