第一次用委托简直晕死,真心求助!!!!!编译通过但没结果,下面分别是FORM1和FORM2的代码,其中FORM1有个按钮弹出FORM2,再点FORM2的按钮去改变FORM1按钮的颜色。还有我想请教要实现此操作用“委托”的方法和用“委托+INVOKE”的方法有什么区别,和线程有什么关系????如果用INVOKE的方法该怎么改????给大家添麻烦了,感谢!!!!!!FORM1中:
   public partial class Form1 : Form
    {
        Form2 f2=new Form2();         public Form1()
        {
            InitializeComponent();
            f2.wtbianliang += new Form2.weituo(zhixingshijian); /////   
        }
        private void zhixingshijian()
        {
            button1.BackColor = Color.Red;//怎么改了没反应啊??
        
        }
        
        private void button1_Click(object sender, EventArgs e)
        {            f2.Show();
           
        }
           private void Form1_Load(object sender, EventArgs e)
        {
    
        }
    }
FORM2中:
public partial class Form2 : Form
    {
        public delegate void weituo();//建立委托
        public event weituo wtbianliang;//委托变量
        public void chufa()
        {
            if (this.wtbianliang != null)
            {
                this.wtbianliang();
            }
        }        public Form2()
        {
            InitializeComponent();
           
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            
        }
    }

解决方案 »

  1.   

    Form1改一下,你的写法不是个好习惯private void button1_Click(object sender, EventArgs e)
      {
        Form2 f2=new Form2();  
        f2.wtbianliang += new Form2.weituo(zhixingshijian); 
        f2.Show();
      }另外我没有看到你Form2谁在调用chufa()这个方法
      

  2.   

    昨晚太晕了忘在按钮里加了,现在成功了,还有麻烦问一下我用委托实现了在FORM2线程里改FORM1控件属性,
    那么“委托+INVOKE”方法是怎么用的 ,和我现在这种方法有什么区别啊,谢谢您了!!!!!
      

  3.   

    委托+INVOKE和直接调用没有什么区别。。
    重点是委托+BeginInvoke方法,它允许你异步执行一个委托,并可以设置当委托执行完成后执行的完成事件。