zoukankan      html  css  js  c++  java
  • 委托之winForm窗口间传递数据

    在winForm应用程序中,窗口间数据的传递是最多的应用之一,尤其是在管理软件当中。

    窗口的数据传递,有多种方式,在这篇随笔中主要是阐述一下利用委托如何来传递数据。

    在本实例程序中,有两个窗体:一个主窗体FrmMain,接收数据;一个子窗体FrmChild,传出数据,UI如下:

    image    image

    在主窗体中,[设置]按钮,弹出子窗体,在文本框中输入相应的值后,点击[确认]返回到主窗体,同时返回数据至主窗体。

    具体代码实现如下:

    一、定义事件类:
    public class PassDataWinFormEventArgs : EventArgs
    {

    public PassDataWinFormEventArgs()
    {
    //
    }
    public PassDataWinFormEventArgs(string refName, string refPlace, int refAge)
    {
    this._name = refName;
    this._place = refPlace;
    this._age = refAge;
    }

    private string _name;
    private string _place;
    private int _age;

    public string Name
    {
    get { return _name; }
    set { _name = value; }
    }
    public string Place
    {
    get { return _place; }
    set { _place = value; }
    }
    public int Age
    {
    get { return _age; }
    set { _age = value; }
    }
    }

    通过PassDataWinFormEventArgs的实例,传递数据。
    二、在子窗体中设计如下代码:
    //添加一个委托
    public delegate void PassDataBetweenFormHandler(object sender, PassDataWinFormEventArgs e);
    //添加一个PassDataBetweenFormHandler类型的事件
    public event PassDataBetweenFormHandler PassDataBetweenForm;
    书写子窗体确认按钮的代码如下:
    private void bbtOK_Click(object sender, EventArgs e)
    {
    string name,place;
    int age;

    name = txtName.Text;
    place = txtPlace.Text;

    Int32.TryParse(txtAge.Text, out age);

    PassDataWinFormEventArgs args = new PassDataWinFormEventArgs(name, place, age);

    PassDataBetweenForm(this, args);

    this.Dispose();
    }

    三、设计主窗体代码:

    主窗体中[设置]按钮的代码如下:

    private void bbtSetup_Click(object sender, EventArgs e)
    {
    FrmChild frmChild = new FrmChild();
    frmChild.PassDataBetweenForm += new FrmChild.PassDataBetweenFormHandler(FrmChild_PassDataBetweenForm);
    frmChild.Show();
    frmChild.Activate();
    }

    主要用来打开子窗体,绑定事件。

    在FrmChild_PassDataBetweenForm()方法中接收PassDataWinFormEventArgs实例传递回来的数据,故此FrmChild_PassDataBetweenForm()代码如下:

    private void FrmChild_PassDataBetweenForm(object sender,PassDataWinFormEventArgs e)
    {
    this.txtName.Text = e.Name;
    this.txtPlace.Text = e.Place;
    this.txtAge.Text = e.Age.ToString();
    }
    四、后记:
    利用委托进行数据传递,有一个很大的优点就是,可以在任何窗体中调用子窗体,而不用修改子窗体内部的设计,从而达到高度复用子窗体。
    转自:http://www.cnblogs.com/inforasc/archive/2009/10/24/1589342.html
  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/suzh/p/2135903.html
Copyright © 2011-2022 走看看