none
c# 窗口同步 RRS feed

答案


  •    
            List<BaseForm> forms = new List<BaseForm>();
                private void button1_Click(object sender, EventArgs e)
            {
                BaseForm bf = new BaseForm();
                bf.myevent += new BaseForm.domyevent(bf_myevent);
                bf.Show();
                BaseForm bf1 = new BaseForm();
                bf1.myevent += new BaseForm.domyevent(another_myevent);
                bf1.Show();
                forms.AddRange(new BaseForm[] { bf, bf1 });
            }

            public void startEvent()
            {
                foreach (BaseForm bf in forms)
                {
                    bf.doit();
                }
            }

            void another_myevent()
            {
                MessageBox.Show("thing1");
            }

            void bf_myevent()
            {
                MessageBox.Show("thing2");
            }

            private void button2_Click(object sender, EventArgs e)
            {
                startEvent();
            }



    public class BaseForm:Form
        {
            public delegate void domyevent();
       
            public event domyevent myevent;

            public void doit()
            {
                if (myevent != null)
                {
                    myevent();
                }
            }
        }
    2010年7月3日 8:31

全部回复

  • 你的窗口是父子窗口吗?你想实现怎样的同步操作。

    关于窗口的同步操作,你可以采用委托事件来实现


    .net/asp.net开发群118343907
    2010年7月3日 0:09
  • 这些窗体一定是由某个窗体创建的比如说

    你有三个form1,form2,form3,那么在form1中有代码Form2 form2 =new Form2();Form3 form3 = new Form3();
    那只要Form2和Form3中的空间是public,那么就可以在Form1中统一调用;

    当然也可以再Form1中添加一个Form数组,重写Form基类BaseForm,添加一个事件eg,MyEvent,在每个需要联动触发的form上都实现这个事件,这样做的灵活性会很好。

    2010年7月3日 8:13
  • 谢谢

    不是父子窗口,我是打游戏,开2个游戏窗口,例如

    有2个记事本(记事本1,记事本2),

    在记事本1中输入A,记事本2中同样也会出现A,

    只做一次输入,2个记事本有相同的结果

    2010年7月3日 8:16

  •    
            List<BaseForm> forms = new List<BaseForm>();
                private void button1_Click(object sender, EventArgs e)
            {
                BaseForm bf = new BaseForm();
                bf.myevent += new BaseForm.domyevent(bf_myevent);
                bf.Show();
                BaseForm bf1 = new BaseForm();
                bf1.myevent += new BaseForm.domyevent(another_myevent);
                bf1.Show();
                forms.AddRange(new BaseForm[] { bf, bf1 });
            }

            public void startEvent()
            {
                foreach (BaseForm bf in forms)
                {
                    bf.doit();
                }
            }

            void another_myevent()
            {
                MessageBox.Show("thing1");
            }

            void bf_myevent()
            {
                MessageBox.Show("thing2");
            }

            private void button2_Click(object sender, EventArgs e)
            {
                startEvent();
            }



    public class BaseForm:Form
        {
            public delegate void domyevent();
       
            public event domyevent myevent;

            public void doit()
            {
                if (myevent != null)
                {
                    myevent();
                }
            }
        }
    2010年7月3日 8:31
  • 谢谢,虽然看的不是很明白,收起来慢慢研究
    2010年7月3日 8:48