比如说我建了两个窗口,为Form1和Form2!
Form1中有个btn1private void btn1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("1");
        }
Form2中有个btn2private void btn2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("2");
        }
现在这两个窗口都通过一个主窗口,Show()出来了。
我想请教的是,如何能在点击Form1中的btn1触发事件的同时,也触发Form2中的btn2事件!
不要Timer控件监控的!

解决方案 »

  1.   


    btn1.Click += btn1_Click;
    btn1.Click += btn2_Click;//注册方法要public
    把他们的逻辑封装在一起才是正解之道。
      

  2.   

    把btn2_Click作成静态公有方法,再在窗体1里面的btn1_Click事件里添加如下代码:
    Form2.btn2_Click(this,EventArgs.Empty);就可以了
      

  3.   

    LS的朋友,能告诉我怎么把btn2_Click作成静态公有方法吗?
      

  4.   

    就是这样,\
       \public static void btn2_Click(object sender, EventArgs e)
      {
      MessageBox.Show("2");
      }
      

  5.   

    顺便帮楼主解释一下1楼的意思,你可以看一下我们的.desigher文件,其实平常都是由.net自动帮我们生成的代码,就有一楼的东西,一楼现在的意思是想直接在代码里面由我们自己做就可以了
      

  6.   

    委托调用相关event
    ((Button)Application.OpenForms["Form2"].Controls.Find("Button2", true)[0])
      

  7.   

    再解释一下我做的代码怎么使用,具体如下:
    private void btn1_Click(object sender, EventArgs e)
      {
      MessageBox.Show("1");
      Form2.btn2_Click(this,EventArgs.Empty);
      }
      

  8.   

    能用了,但是会报错
    Form2.Desigher.cs
    中的this.btn2.Click += new System.EventHandler(this.btn2_Click);报错
    提示:请改用类型名来限定它
      

  9.   

    它改成静态方法后,就变成类的属性了,可以改成Form2.btn2_Click,lz,我想和你问一下,在你的Form1里面有Form2的对象吗?要是有的话,可以不用静态方法,只需要改成Public方法就可以,就是把Form2.btn2_Click改成对象名.btn2_Click
      

  10.   

    希望楼主以后多看看.designer,试着自己模仿来做控件布局,对你一定会有好处的
      

  11.   

    哦,我原来是要用Form2对象名.btn2_Click,但是提示方法没有0个参数,我是新学,不太懂,就没弄成功!
      

  12.   

    呵呵,良好的命名规范和作注释的习惯,这个我明白,非常感谢qqrto,还有其他的高手,学了不少!
    结贴散分!