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;
                } ));
            }
        }
    }

  • 相关阅读:
    MyBatis使用
    华为如何实现基于Git的跨地域协同开发
    推荐一款华为最新的自动化代码检查工具
    我是如何进行code review的
    谈谈敏捷开发
    软件测试管理的一点小心得
    (转)技术转管理可能遇到的 3 大挑战及解决方案
    领域驱动设计和实践
    NET开源项目
    asp.net搭建mybatis开发环境
  • 原文地址:https://www.cnblogs.com/salam/p/1747571.html
Copyright © 2011-2022 走看看