事件与委托更新父窗体数据,简单比较

1.委托更新父窗页面。

例如,功能:父窗体A,子窗体B,由A打开B窗体,更新A窗体数据

A窗体代码:

public delegate void
reflshPassenger();//声明委托

private void
btnAddPassenger_Click(object sender, EventArgs
e)//打开B窗体按钮,并把委托窗体给B窗体
       
{
           
reflshPassenger reflshData =
getPassengers;
           
new FZ_Passengers("add",
reflshData).ShowDialog();
        }

private void
getPassengers()

{

//...dosomething

}

B窗体代码:

A.reflshPassenger reflshpassenger;
//声明A窗体委托

public FZ_Passengers(string _strState,
formSubmitOrder.reflshPassenger
_reflsh)
       
{
           
InitializeComponent();
           
strState =
_strState;
           
reflshpassenger =
_reflsh;//接受主窗体传递过来的委托
        }

//最后在需要调用的位置,调用即可:

if(reflshpassenger!=null)

{

reflshpassenger()

}

2.基于事件:

窗体A代码:

B b;

注册事件:

     B= new
Frm_B();
        
 
           
B.eventLookUp += new
EventHandler(frm_ValueChanged);//注册事件,要在ShowDialog之前实现
           
B.ShowDialog();

实现事件:

if
(B.strName !=
"")
           
{
               
this.lb_Sub.Text =
frm.strName.Trim();
           
}
           
else
           
{
               
return;
           
}

B窗体代码:

事件声明:

public event EventHandler
eventLookUp;
                  
public string strName { get; set; }//声明字符串

//在具体的位置实现事件

  
if (eventLookUp !=
null)
             
  {
                   
strName =
dgv_DataSource.Rows[e.RowIndex].Cells["userName"].Value.ToString().Trim();
               
    this.eventLookUp(sender,
e);
               
    this.Close();
             
  }

总结,基于事件的实现方法,更简单,效率也高点,后期的维护性也高些!~

事件与委托更新父窗体数据,简单比较,布布扣,bubuko.com

时间: 2024-10-25 00:23:26

事件与委托更新父窗体数据,简单比较的相关文章

20150812 Asp.net 父窗体获取子窗体的返回值,更新父窗体文本控件(应用)

1. 父窗体 **************************************** using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using

React-组件嵌套-子组件通过委托向父组件传值

一.简述 父组件嵌套子组件,父组件的处理函数通过属性的方式赋值组子组件( <GenderSelect handleSelect={this.handleSelect}></GenderSelect> ),子组件通过触发事件,委托调用父组件的处理函数,从而实现把值传给父组件(return <select onChange={this.props.handleSelect}>, handleSelect: function(event) { this.setState({g

mdi父窗体如何向子窗体发送数据

Q: mdi父窗体如何向子窗体发送数据,一般都有哪些方式? A: 对于最通常的MDI窗口, WinForm在Form 类的属性中提供了Form.MdiChildren这个属性来返回所有的子窗口. 这样我们只要继承Form类, 然后使用这个类来新建子窗口.public class MyChildForm : Form{} 然后, 通过MdiChildren属性来获取子窗口, 调用子窗口类中定义的公共方法, 或者公共属性来传送数据即可. 第二种方法, 我们还可以在MDI parent form中定义

C#父窗体右击事件实现

之前在博问上提问过,没人回答啊,豆太少没人权? 没注册钩子的话根本没办法弹出右键菜单啊,因为在父窗体内有一个容器,所以鼠标在右击时是无法触发窗体的mousedown事件的,即使把KeyPreview设置为true也一样无法触发 代码思路:注册鼠标钩子,在钩子的鼠标右击时回调函数里调用事件,事件里判断当前鼠标位置是否在当前窗口的工作区域内,是的话把右键菜单控件show出来 —————————————————————— 把api中钩子注册与卸载的函数重新在C#中装封一次 using System;

分别用委托和事件和接口实现多窗体间的传值

委托实现多窗口传值的一般流程是1.创建委托类型 private Action<string> AfterMsgSend { get; set; }2.创建窗体对象 ChildFrm frm = new ChildFrm();3.给委托注册方法(追加),注意此处的方法是窗体的方法 即frm.方法 AfterMsgSend += frm.SetText;//窗体打开之前给委托注册方法4.frm.Show();5.触发方法 AfterMsgSend(txtMessage.Text.Trim());

asp.net 父窗体获取子窗体的返回值,可用来对父窗体局部更新

今天在项目上遇到了这个问题,其实只是window.returnValue的简单应用,不是asp.net的专属内容.作为积累,记录一个简单的实现模型. 图1  用到的文件 从图1中我们可以看到,只用到了两个页面,其中Default.aspx作为父页面,Default2.aspx作为子页面被弹出.Default.aspx页面上有两个TextBox一个Button,代码如下: 1 <%@ Page Language="C#" AutoEventWireup="true&quo

Extjs 窗体居中,双重窗体弹出时清除父窗体的鼠标事件

这个是监控窗体缩放的事件 缩放中居中主要在 'beforeshow' 和 'destroy'两个事件里面监控 var EditTempWindow; Ext.EventManager.onWindowResize(function() { if (EditTempWindow) { EditTempWindow.center() } }); Ext.define("Define.Class.EditWindow", { id: 'RoomEditWin', xtype: 'window

事件与委托

C# 中的委托和事件 文中代码在VS2005下通过,由于VS2003(.Net Framework 1.1)不支持隐式的委托变量,所以如果在一个接受委托类型的位置直接赋予方法名,在VS2003下会报错,解决办法是显式的创建一个委托类型的实例(委托变量).例如:委托类型 委托实例 = new 委托类型(方法名); 引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易

Winfrom子窗体刷新父窗体

本人比较懒,直接从网上转载了一篇比较合适的文章,只是文章格式有点乱,地址是 http://aspnet.blog.163.com/blog/static/17515510920121126104433237/ 调用窗体(父):Form1,被调用窗体(子):Form2 方法1:   所有权法//Form1://需要有一个公共的刷新方法public   void   Refresh_Method(){//...}//在调用Form2时,要把Form2的所有者设为Form1Form2   f2   =