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

  • 相关阅读:
    Bean
    DI
    require import export
    JSON转js
    vue路由相关
    JS引号区别
    Go语言系列之标准库strconv
    Go语言系列之标准库flag
    Go语言系列之并发编程
    Go语言系列之自定义实现日志库
  • 原文地址:https://www.cnblogs.com/salam/p/1747571.html
Copyright © 2020-2023  润新知