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

  • 相关阅读:
    快速构建Windows 8风格应用22MessageDialog
    快速构建Windows 8风格应用20MediaElement
    Windows Phone SDK 8.0安装步骤
    快速构建Windows 8风格应用25数据绑定
    快速构建Windows 8风格应用24App Bar构建
    快速构建Windows 8风格应用21构建简单媒体播放器
    快速构建Windows 8风格应用23App Bar概述及使用规范
    sqlyog存储过程
    201751201 输入数字输出汉字读法
    考虑算法的时间效率
  • 原文地址:https://www.cnblogs.com/salam/p/1747571.html
Copyright © 2020-2023  润新知