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; }不明白, => 是什么意思,这一句的意思是什么?                
                    
                    

解决方案 »

  1.   

    “Lambda 表达式”
    =>就是“Lambda 表达式”的运算符,(sender1, e1)左边是它的参数,
    右边是匿名方法
      

  2.   

    m_dlg.TextBoxChanged += new EventHandler
    这个就不用说了吧,类似Button的click
    你这句话的意思就是将匿名方法(sender1, e1) =>
    { richTextBox1.Text = m_dlg.TextBoxValue; }
    注册的Textchanged时间里,当Text内容改变时,就会调用上面的匿名方法。
      

  3.   

    (sender1, e1)左边是它的参数,为何可以不指定类型呢?而且必须是两个参数
      

  4.   

    在Lambda 表达式中无需声明添加的变量类型,因为编译器知道变量的类型,
    再说委托封装的方法的签名必须与委托一致,你知道EventHandler是什么吗,他的参数类型和个数又是怎样的就不会问这个问题了。
      

  5.   

    因为new EventHandler这个委托参数就是两个。Lambda 表达式就是匿名去实现之。
    都说了你看看书都明白了。跟这问这些基础问题。真的没必要。
      

  6.   

    是用Lambda表达式实现一个方法。