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 WindowsFormsApplication1
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
} private MyDialog m_dlg; //用于非模式窗体 //打开模式
private void toolStripButton1_Click(object sender, EventArgs e)
{
//将文本框传过去
MyDialog dlg = new MyDialog(richTextBox1.Text);
if (dlg.ShowDialog() == DialogResult.OK)
{
richTextBox1.Text = dlg.TextBoxValue;
}
} //打开非模式
private void toolStripButton2_Click(object sender, EventArgs e)
{
if (m_dlg == null)
{
//文本框改变事件
m_dlg = new MyDialog(richTextBox1.Text);
m_dlg.TextBoxChanged += new EventHandler(
(sender1, e1) =>
{ richTextBox1.Text = m_dlg.TextBoxValue; }
); //窗体关闭事件
m_dlg.FormClosed += new FormClosedEventHandler(
(sender2, e2) => { m_dlg = null; }
);
m_dlg.Show(this);
}
else
{
m_dlg.Activate();
}
} private void richTextBox1_TextChanged(object sender, EventArgs e)
{ }
}
}
其中的下列语法不明白: //打开非模式
private void toolStripButton2_Click(object sender, EventArgs e)
{
if (m_dlg == null)
{
//文本框改变事件
m_dlg = new MyDialog(richTextBox1.Text);
m_dlg.TextBoxChanged += new EventHandler(
(sender1, e1) =>
{ richTextBox1.Text = m_dlg.TextBoxValue; }
); //窗体关闭事件
m_dlg.FormClosed += new FormClosedEventHandler(
(sender2, e2) => { m_dlg = null; }
);
m_dlg.Show(this);
}
else
{
m_dlg.Activate();
}
}
在具体一些,就是:m_dlg.TextBoxChanged += new EventHandler(
(sender1, e1) =>
{ richTextBox1.Text = m_dlg.TextBoxValue; }不明白, => 是什么意思,这一句的意思是什么?
=>就是“Lambda 表达式”的运算符,(sender1, e1)左边是它的参数,
右边是匿名方法
这个就不用说了吧,类似Button的click
你这句话的意思就是将匿名方法(sender1, e1) =>
{ richTextBox1.Text = m_dlg.TextBoxValue; }
注册的Textchanged时间里,当Text内容改变时,就会调用上面的匿名方法。
再说委托封装的方法的签名必须与委托一致,你知道EventHandler是什么吗,他的参数类型和个数又是怎样的就不会问这个问题了。
都说了你看看书都明白了。跟这问这些基础问题。真的没必要。