偶尔想起来了窗体传值的应用,保存下来理解委托和事件,省的以后自己又忘了,在主界面委托的实例化和事件的声明中尝试了匿名委托、lamda表达式(注释掉的部分,每一个都可以运行成功),最后一种委托的匿名函数实例化最好理解
主界面代码:
namespace WindowsFormsApplication1
{
public partial class MainForm : Form
{
private SubForm sf;
public MainForm()
{
InitializeComponent();
sf = new SubForm();
//sf.TransFormEventHander+=sf_TransFormEventHander;
//sf.TF = new SubForm.TransForm(sf_TransFormEventHander);
//sf.TF = new SubForm.TransForm( a => this.textBox1.Text = a);
//sf.TF = new SubForm.TransForm((string a) => {this.textBox1.Text = a;});
sf.TF = new SubForm.TransForm((string a) => { this.textBox1.Text = a;});
}
private void button1_Click(object sender, EventArgs e)
{
sf.ShowDialog();
}
void sf_TransFormEventHander(string text)
{
this.textBox1.Text = text;
}
}
}
子界面代码:
namespace WindowsFormsApplication1
{
public partial class SubForm : Form
{
public delegate void TransForm(string text);
public event TransForm TransFormEventHander;
public TransForm TF;
public SubForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//if (TransFormEventHander != null)
//{
// TransFormEventHander(this.textBox1.Text);
//}
if (TF != null)
{
TF(this.textBox1.Text);
}
this.Close();
}
}
}