A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lyz1024 黑马帝   /  2012-1-24 14:32  /  2163 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

不重复打开同一个窗体?如果重复打开已打开的子窗体,把该子窗体设为活动窗体

评分

参与人数 1技术分 +5 收起 理由
官方工作人员 + 5 新年奖励

查看全部评分

1 个回复

倒序浏览
本帖最后由 岳喜礼 于 2012-2-1 23:46 编辑

        /// <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.WindowState = FormWindowState.Maximized;
                    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)
                {
                    myMDIChild = f;
                    break;
                }
            }
            // Show the exist form
            if (myMDIChild != null)
            {
                myMDIChild.TopMost = true;
                myMDIChild.WindowState = FormWindowState.Maximized;
                myMDIChild.Show();
                myMDIChild.Focus();
                return true;
            }
            else
                return false;
        }

打开窗体的按钮下

OpenWindow(typeof(MainChild).ToString());//MainChild为子窗体名
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马