loading ...
搜狐圈子 IT数码 web开发 浏览帖子

来自圈子:web开发 (41 人)

圈子描述:创造是一种乐趣
圈子标签:web 开发
web开发
副圈主:
共0页 | 上一页   1   下一页

用反射实现的MDI子窗体只运行一个实例 0/?

标签:
首先是通过子窗体类型名来判断是否打开新的子窗体,还是把原有的子窗体进行显示。
    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() );
多分享,做达人>> 分享 分享 | 引用 | 回复 | 发表时间:2008-05-22
共0页 | 上一页   1   下一页