我是想这样的一个效果A窗口  B窗口   C是一个类        A和B不是父子关系       在B窗口中修改C类中的一个参数,在C中以事件的形式 告诉A窗口  参数修改了  然后A窗口读取C类的参数。
只想知道这个 委托事件是怎么写的   不需要别的方法。  谢谢大哥们

解决方案 »

  1.   

        public class Class1
        {
            public event MethodInvoker EditHandler;
            public Class1()
            {
            }        public void Edit()
            {
                if (EditHandler != null) EditHandler();
            }
        }
    //A
                c.EditHandler += new MethodInvoker(c_EditHandler);
            }        void c_EditHandler()
            {
                MessageBox.Show("我被改了");
            } //B
                c.Edit();
      

  2.   

    我对模式没什么概念,基本思路我有。
    form1中:Class1 c=new Class1();
    private void Form1_Load(object sender, EventArgs e)
            {
                c.MyEvent+=new Class1.My(c_MyEvent);//绑定事件
            }
            public void c_MyEvent(string s)
            {
                textBox1.Text = s;
            }
    Form2中:Class1 c = new Class1();
    private void textBox1_TextChanged(object sender, EventArgs e)
            {
                c.nn(textBox1.Text);
            }
    类Class1中:private string s;
            public string S
            {
                get { return s; }
                set { s = value; }
            }
            public delegate void My(string s);
            public event My MyEvent;
            public void nn(string sss)
            {
                S = sss;
                MyEvent(s);//这里出现未将对象引用的实例
            }
    我认为可能是 New Class1()的时候又重新初始化了
    可能是我的写法有问题,求指教
      

  3.   

    两个窗口必须用同一个类,实例化只能一次,要是不传类参的话就要用静态声明
    如:
            Form1:
            public static Class1 c = new Class1();        Form2:
            Form1.c.Edit();
      

  4.   


    类只是定义而已,怎么可能真正执行?你知道了A窗口、B窗口,那么还要知道C类的对象实例到底寄宿在哪里?一个空洞的“C类”,看不出它跟两个窗口的存在相对关系,就好象你跟空气打仗,没有可能写什么东西。
      

  5.   

    C类用来存放一个变量 当窗口B修改这个变量之后 在类中触发提示窗口A 变量被修改了。这个实例 我之前参考这写过,现在忘记咋写了。A和B属于并列的2个窗体,在3楼贴出了我的相关代码。求解
      

  6.   


    你这个真是让人烦恼!面向对象,就是说你要基于具体的对象实例来设计,而不是空洞的类型。就好象两个苹果,长得一模一样,味道也一样,可它们是两个独立的苹果,不要说成是一个。你new两个class有个什么用呢?先搞清楚这三个对象的声明期是怎样的(既如何产生、存在、直至销毁),才能不乱。
      

  7.   

    你new两个class有个什么用呢?先搞清楚这三个对象的声明期是怎样的
        -->  你new两个Class1的实例有个什么用呢?先搞清楚这三个对象的生命期是怎样的
    不知道它们如何产生的,也就不知道A窗与B窗凭什么知道C实例(注意我这里A、B、C是指三个对象,而不是空洞的类型)。随便举个例子:public void MainProc()
    {
        Form a=CreateFormA();
        Form b=CreateFormB();
        C c=CreateObjectC();
        b.SetTargetObject(c);  //告诉b该去设置哪一个具体对象的属性
        c.ValueChanged += (sender,e) => {a.NotifyValueChanged(c); };