知道了一种方法:ShowDialog()是个阻塞函数,之所以Form1不可用,是因为这个函数被阻塞,一直没有返回,所以Form1的代码根本没有往下执行,等到Form2关闭后,代码才接着往下执行,所以不用找事件,直接把代码写到ShowDialog之后就可以了
不知,有没有具体的form1对应的事件??

解决方案 »

  1.   

    不是太明白你的意思,试试,new Form2().Show(),不要用ShowDialog()
      

  2.   


    服了你了。.net C# 内置的这些事件外,你自己造一个事件??你贴上你造的给大家开开眼吧
      

  3.   


    服了你了。.net C# 内置的这些事件外,你自己造一个事件??你贴上你造的给大家开开眼吧自己去查资料吧,懒得吐槽
      

  4.   


    假设变量x引用了一个Form,要获取焦点,调用x.Show();
      

  5.   


    用Form_Activated没错,你之所以说会随时触发是因为调试的时候
    服了你了。.net C# 内置的这些事件外,你自己造一个事件??你贴上你造的给大家开开眼吧建议楼主虚心学习下,用委托自定义事件不是什么不能的事情...
    http://msdn.microsoft.com/zh-cn/library/ms173171.aspx以你的需求,可以在Form2的Closed事件里使用一个事件/委托来显示Form1
      

  6.   


        class MyEventManage
        {
            public static event MethodInvoker MyEvent;  //事件
            /// <summary>
            /// 触发事件的方法
            /// </summary>
            static public void OnMyEvent()
            {
                try
                {
                    MyEvent();    //触发事件
                }
                catch
                {
                    //处理异常
                }
            }
            // MyEventManage.MyEvent += new MethodInvoker(方法); //在任何地方都可以用这句话接收事件处理
        }
      

  7.   


    在Form2.Closed里调用OnMyEvent();
    在主Form里写MyEventManage.MyEvent += new MethodInvoker(ShowForm1);
    private void ShowForm1()
    {
        Form1.Show();
        //Form1.Activate();
        //Form1.SetBounds();
    }
      

  8.   

    ShowDialog是一个阻塞方法,当它打开的窗口关闭之后,你就可以直接指定另一个窗口获取焦点。例如var f2 = new Form2();
    f2.ShowDialog();
    f1.Show();
      

  9.   


    关键就是你这个说法“触发对应的事件”是什么意思实在是难懂。事件是人家宿主对象自己触发的,而不是客户程序来触发的。客户程序直接调用Form2的某个方法(或者属性),而不是事件。