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

  • 相关阅读:
    使用Arduino和加速度计自制计步器
    使用MPU6050陀螺仪自制Arduino数字量角器
    使用Arduino和SD卡模块记录数据并导出到Excel
    NUCLEO-8L152开发板中文应用笔记整理集合
    使用Arduino开发板连接干簧管(Reed Switch)的方法
    MSP430 LaunchPad开发板入门教程集合
    使用Arduino开发板和ESP8266从互联网读取数据
    使用Arduino开发板实现与MPU6050陀螺仪传感器连接的方法
    使用Arduino和LED光柱显示器件轻松制作电池电压指示器
    JDK和JRE的区别
  • 原文地址:https://www.cnblogs.com/salam/p/1747571.html
Copyright © 2011-2022 走看看