子窗体根据父窗体传递的参数及时更新,子窗体只被实例化一个,怎么做?
在一个程序中,父窗体向子窗体传递参数,然后子窗体根据父窗体传递的参数及时更新显示的数据,子窗体只被实例化一个,怎么做?
------解决方案--------------------这个方法能帮助你   
 http://blog.csdn.net/Knight94/archive/2006/05/17/742324.aspx
------解决方案--------------------由于在MDI中,子窗体会很多,那么在我以前一篇文章中所提到的方法就有些繁琐了。为了能适应多个子窗体,并对于每个子窗体只保留一个实例,那么我就用一个新的方法来替换,即用反射方法来作处理。        
 大致代码如下。   
 首先是通过子窗体类型名来判断是否打开新的子窗体,还是把原有的子窗体进行显示。   
     using System.Reflection;   
     ///  <summary>    
     /// Open child window   
     ///  </summary>    
     ///  <param name= "ChildTypeString ">  </param>    
     private void OpenWindow( string ChildTypeString )   
     {   
         Form myChild = null;   
         if( !ContainMDIChild( ChildTypeString ) )   
         {   
             // Get current process assembly   
             Assembly assembly = Assembly.GetExecutingAssembly();        
             // Create data type using type string   
             Type typForm = assembly.GetType( ChildTypeString );        
             // Create object using type 's  "InvokeMember " method   
             Object obj = typForm.InvokeMember(   
                 null,    
                 BindingFlags.DeclaredOnly |    
                 BindingFlags.Public | BindingFlags.NonPublic |    
                 BindingFlags.Instance | BindingFlags.CreateInstance,    
                 null,    
                 null,   
                 null );        
             // Show child form    
             if( obj != null )   
             {   
                 myChild = obj as Form;   
                 myChild.MdiParent = this;   
                 myChild.Show();   
                 myChild.Focus();   
             }   
         }   
     }        
     ///  <summary>    
     /// Search mdi child form by specific type string   
     ///  </summary>    
     ///  <param name= "ChildTypeString ">  </param>    
     ///  <returns>  </returns>    
     private bool ContainMDIChild( string ChildTypeString )    
     {   
         Form myMDIChild = null;   
         foreach(Form f in this.MdiChildren)    
         {    
             if( f.GetType().ToString() == ChildTypeString )    
             {    
                 // found it    
                 myMDIChild = f;    
                 break;    
             }    
         }         
         // Show the exist form   
         if( myMDIChild != null)    
         {    
             myMDIChild.TopMost = true;   
             myMDIChild.Show();    
             myMDIChild.Focus();    
             return true;   
         }    
         else   
             return false;   
     }        
 以上两部分就可以对于每个子窗体只创建一个实例。那么调用以上代码就非常简单了。   
 如:   
     //Open a mdi child form which type named  "MDIChild "   
     OpenWindow( typeof( MDIChild ).ToString() );     
 引用自愚翁的Blog
------解决方案--------------------楼上的主意不错,或者你可以把要传递的参数定义成静态变量,改变之后利用消息通知子窗体; 
 或者你把子窗体中要显示新参数的的控件什么的设置成public,在父窗体中直接“子窗体实例.控件.text=”,然后刷新就可以了;