给你的MDI程序加上一个标签栏

    技术2022-05-11  78

    在MDI窗体中定义一个

            TabControl tabCon = new TabControl();

    在MdiChildActivate事件写:代码如下:

            private void MainFrame_MdiChildActivate(object sender, EventArgs e)        {            Form f = this.ActiveMdiChild;            if (f == null) { return; }            string key = f.Handle.ToString();            if (!tabCon.TabPages.ContainsKey(key))            {                tabCon.TabPages.Add(key, f.Text);                f.Closed += delegate(Object _sender, EventArgs _e) { tabCon.TabPages.RemoveByKey((_sender as Form).Handle.ToString()); };            }            tabCon.SelectedIndex = tabCon.TabPages.IndexOfKey(key);         } 

     

            void tabCon_Selected(Object sender, TabControlEventArgs e)        {            if (e == null || e.TabPage == null)                return;            string key = e.TabPage.Name;            foreach (Form f in this.MdiChildren)            {                if (f.Handle.ToString() == key)                {                    f.BringToFront();                    break;                }            }        }        private void tabCon_DoubleClick(object sender, EventArgs e)        {            if (this.tabCon.Visible && tabCon.TabCount>0)            {                Form childFrom = this.ActiveMdiChild;                childFrom.Close();                this.RemoveTabPageFromTabCtrl();            }        }        /**/        /// <summary>        /// 在子窗体关闭时移除对应的TabPage        /// </summary>        private void RemoveTabPageFromTabCtrl()        {            for (int i = 0; i < this.tabCon.TabCount; i++)            {                if (this.ActiveMdiChild.Equals(tabCon.TabPages[i].Tag))                {                    this.tabCon.TabPages.Remove(this.tabCon.TabPages[i]);                    break;                }            }        }


    最新回复(0)