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