zoukankan      html  css  js  c++  java
  • WinForm中的窗体间传值(委托在窗体应用程序的运用)

    在WinForm编程中我们经常需要进行俩个窗体间的传值。

    下面我给出了两种方法,来实现传值

    一、在输入数据的界面中定义一个属性,供接受数据的窗体使用

    1、子窗体

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using DevExpress.XtraEditors;

    namespace DevControl
    {
        public partial class FEdit : DevExpress.XtraEditors.XtraForm
        {
            public FEdit()
            {
                InitializeComponent();
            }

           public string Value { get; private set; }

            private void btnOk_Click(object sender, EventArgs e)
            {
                this.Value = this.txtData.Text;
            }

        }
    }

    2、父窗体

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace DevControl
    {
        public partial class View : Form
        {
            public View()
            {
                InitializeComponent();
            }

            private void barButtonItem4_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
            {
                FEdit edit = new FEdit();
                if (edit.ShowDialog()==DialogResult.OK)
                {
                    this.txtDate.Text = edit.Value;

                }
         }
        }
    }

    二、在输入数据的界面中定义一个委托,委托中的参数是所输入的数据

    1、子窗体

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using DevExpress.XtraEditors;

    namespace DevControl
    {
        public partial class FEdit : DevExpress.XtraEditors.XtraForm
        {
            public FEdit()
            {
                InitializeComponent();
            }

            private void btnOk_Click(object sender, EventArgs e)
            {
                if (this.showDialogHandler!=null)
                {
                    this.showDialogHandler(this.txtData.Text);//给委托参数赋值
                }
                this.Dispose();//释放窗体
            }

            private Action<object> showDialogHandler;//定义一个委托,它有一个参数

            public void ShowDialog(Action<object> showDialogHandler)
            {
                this.showDialogHandler = showDialogHandler;
                this.Show();
            }

        }
    }

    2、父窗体

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace DevControl
    {
        public partial class View : Form
        {
            public View()
            {
                InitializeComponent();
            }

            private void barButtonItem4_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
            {
                FEdit edit = new FEdit();
                edit.ShowDialog(new Action<object>((obj) =>
                {
                    var result = (string)obj;
                    this.txtDate.Text = result;
                } ));
            }
        }
    }

  • 相关阅读:
    两个链表的第一个公共结点
    数组中的逆序对
    C++强制类型转换运算符(static_cast、reinterpret_cast、const_cast和dynamic_cast)
    第一个只出现一次的字符
    机器学习算法速览表
    丑数
    设计模式---行为型设计模式【策略模式】
    设计模式---行为型设计模式【备忘录模式】
    设计模式----创建型设计模式【单例模式】
    设计模式----创建型设计模式【简单工厂、工厂方法、抽象工厂】
  • 原文地址:https://www.cnblogs.com/salam/p/1747571.html
Copyright © 2011-2022 走看看