Esempio n. 1
0
        protected override void OnPaint(PaintEventArgs e)
        {
            this.SetDefaultSelected();
            Rectangle borderRect = this.ClientRectangle;

            borderRect.Width--;
            borderRect.Height--;

            this._startPos = 0;
            if (this.DesignMode)
            {
                e.Graphics.DrawRectangle(SystemPens.ControlDark, borderRect);
            }
            e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

            for (int i = 0; i < this._tabPages.Count; i++)
            {
                vTabPage currentPage = this._tabPages[i];
                if (!currentPage.Visible && !DesignMode)
                {
                    continue;
                }
                this.OnCalcTabPage(e.Graphics, currentPage);
                currentPage.IsDrawn = false;
                this.OnDrawTabPage(e.Graphics, currentPage);
            }
        }
Esempio n. 2
0
        private void OnCalcTabPage(Graphics g, vTabPage page)
        {
            RectangleF buttonRect = new RectangleF(new Point(this._startPos, 0), HEADER_SIZE);

            page.StripBounds = buttonRect;
            this._startPos  += (int)HEADER_SIZE.Width - 1;
        }
Esempio n. 3
0
        protected override void OnInsert(int index, object value)
        {
            vTabPage page = value as vTabPage;

            page.Changed += new EventHandler(OnPage_Changed);
            this.OnCollectionChanged(new CollectionChangeEventArgs(CollectionChangeAction.Add, value));
        }
Esempio n. 4
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            if (e.Button != MouseButtons.Left)
            {
                return;
            }
            for (int i = 0; i < this._tabPages.Count; i++)
            {
                vTabPage page = this._tabPages[i];
                if (page.StripRect.Contains(e.Location))
                {
                    page.StripState  = EMouseState.MouseDown;
                    page.IsStripDown = true;
                }
                else
                {
                    page.StripState = EMouseState.Normal;
                }
            }
            vTabPage tabPage = this.GetTabPageByPoint(e.Location);

            this.SelectedPage = tabPage;
            base.Invalidate();
        }
Esempio n. 5
0
 public virtual void Remove(vTabPage page)
 {
     if (base.List.Contains(page))
     {
         base.List.Remove(page);
     }
 }
Esempio n. 6
0
        private void OnRemoving(object sender, ComponentEventArgs e)
        {
            IDesignerHost host = (IDesignerHost)this.GetService(typeof(IDesignerHost));

            if (e.Component is vTabPage)
            {
                vTabPage page = e.Component as vTabPage;
                if (this.Control.TabPages.Contains(page))
                {
                    this._changeService.OnComponentChanging(this.Control, null);
                    this.Control.RemoveTab(page);
                    this._changeService.OnComponentChanged(this.Control, null, null, null);
                    return;
                }
            }
            if (e.Component is vTabControl)
            {
                for (int i = this.Control.TabPages.Count - 1; i >= 0; i--)
                {
                    vTabPage page = this.Control.TabPages[i];
                    this._changeService.OnComponentChanging(this.Control, null);
                    this.Control.RemoveTab(page);
                    host.DestroyComponent(page);
                    this._changeService.OnComponentChanged(this.Control, null, null, null);
                }
            }
        }
Esempio n. 7
0
        protected override void OnRemove(int index, object value)
        {
            base.OnRemove(index, value);
            vTabPage page = value as vTabPage;

            page.Changed -= new EventHandler(OnPage_Changed);
            OnCollectionChanged(new CollectionChangeEventArgs(CollectionChangeAction.Remove, value));
        }
Esempio n. 8
0
 public virtual void Insert(int index, vTabPage page)
 {
     if (this.Contains(page))
     {
         return;
     }
     base.List.Insert(index, page);
 }
Esempio n. 9
0
 internal void SelectPage(vTabPage page)
 {
     if (page != null)
     {
         page.Dock     = DockStyle.Fill;
         page.Visible  = true;
         page.Selected = true;
     }
 }
Esempio n. 10
0
        public virtual int Add(vTabPage page)
        {
            int res = base.IndexOf(page);

            if (res == -1)
            {
                res = base.List.Add(page);
            }
            return(res);
        }
Esempio n. 11
0
        public void AddTab(vTabPage page, bool autoSelect)
        {
            page.Dock = DockStyle.Fill;
            this._tabPages.Add(page);

            if ((autoSelect && page.Visible) || (page.Visible && this._tabPages.DrawnCount < 1))
            {
                this.SelectedPage = page;
                this.SelectPage(page);
            }
        }
Esempio n. 12
0
 private void SetDefaultSelected()
 {
     if (this._tabPages.Count > 0)
     {
         this._selecedPage = this._tabPages[0];
     }
     for (int i = 0; i < this._tabPages.Count; i++)
     {
         vTabPage page = this._tabPages[i];
         page.Dock = DockStyle.Fill;
     }
 }
Esempio n. 13
0
        public virtual vTabPage MoveTo(int newIndex, vTabPage page)
        {
            int currentIndex = base.List.IndexOf(page);

            if (currentIndex >= 0)
            {
                base.RemoveAt(currentIndex);
                this.Insert(0, page);
                return(page);
            }
            return(null);
        }
Esempio n. 14
0
 protected override void OnMouseLeave(EventArgs e)
 {
     base.OnMouseLeave(e);
     for (int i = 0; i < this._tabPages.Count; i++)
     {
         vTabPage page = this._tabPages[i];
         if (!page.IsStripDown)
         {
             page.StripState = EMouseState.Normal;
             base.Invalidate(page.StripRect);
         }
     }
 }
Esempio n. 15
0
        private void OnRemoveTabControl(object sender, EventArgs e)
        {
            IDesignerHost       host        = (IDesignerHost)this.GetService(typeof(IDesignerHost));
            DesignerTransaction transaction = host.CreateTransaction("Remove TabControl");

            this._changeService.OnComponentChanging(this.Control, null);
            vTabPage page = this.Control.TabPages[this.Control.TabPages.Count - 1];

            this.Control.UnSelectPage(page);
            this.Control.TabPages.Remove(page);
            this._changeService.OnComponentChanged(this.Control, null, null, null);
            transaction.Commit();
        }
Esempio n. 16
0
        private void OnAddTabControl(object sender, EventArgs e)
        {
            IDesignerHost       host        = (IDesignerHost)this.GetService(typeof(IDesignerHost));
            DesignerTransaction transaction = host.CreateTransaction("Add TabControl");
            vTabPage            page        = (vTabPage)host.CreateComponent(typeof(vTabPage));

            this._changeService.OnComponentChanging(this.Control, null);
            this.Control.AddTab(page);
            int index = this.Control.TabPages.IndexOf(page) + 1;

            page.Title = "TabPage" + index;
            this.Control.SelectPage(page);
            this._changeService.OnComponentChanged(this.Control, null, null, null);
            transaction.Commit();
        }
Esempio n. 17
0
 protected override void OnMouseUp(MouseEventArgs e)
 {
     base.OnMouseUp(e);
     if (e.Button != MouseButtons.Left)
     {
         return;
     }
     for (int i = 0; i < this._tabPages.Count; i++)
     {
         vTabPage page = this._tabPages[i];
         page.IsCloseDown = false;
         page.IsStripDown = false;
         page.StripState  = EMouseState.Normal;
         base.Invalidate(page.StripRect);
     }
 }
Esempio n. 18
0
 protected override void WndProc(ref System.Windows.Forms.Message m)
 {
     if (m.Msg == (int)WindowsMessage.WM_LBUTTONDOWN)
     {
         Point    point = this.Control.PointToClient(Cursor.Position);
         vTabPage page  = this.Control.GetTabPageByPoint(point);
         if (page != null)
         {
             this.Control.SelectedPage = page;
             ArrayList selection = new ArrayList();
             selection.Add(page);
             ISelectionService selectionService = (ISelectionService)this.GetService(typeof(ISelectionService));
             selectionService.SetSelectedComponents(selection);
         }
     }
     base.WndProc(ref m);
 }
Esempio n. 19
0
 public virtual void Assign(vTabCollection collection)
 {
     this.BeginUpdate();
     try
     {
         base.Clear();
         for (int i = 0; i < collection.Count; i++)
         {
             vTabPage page    = collection[i];
             vTabPage newPage = new vTabPage();
             newPage.Assign(page);
             this.Add(newPage);
         }
     }
     finally
     {
         this.EndUpdate();
     }
 }
Esempio n. 20
0
 protected override void OnMouseMove(MouseEventArgs e)
 {
     base.OnMouseMove(e);
     for (int i = 0; i < this._tabPages.Count; i++)
     {
         vTabPage page = this._tabPages[i];
         if (!page.IsStripDown)
         {
             if (page.StripBounds.Contains(e.Location))
             {
                 page.StripState = EMouseState.MouseMove;
             }
             else
             {
                 page.StripState = EMouseState.Normal;
             }
             base.Invalidate(page.StripRect);
         }
     }
 }
Esempio n. 21
0
        public vTabPage GetTabPageByPoint(Point pt)
        {
            vTabPage page  = null;
            bool     found = false;

            for (int i = 0; i < this._tabPages.Count; i++)
            {
                vTabPage currentPage = this._tabPages[i];
                if (currentPage.StripBounds.Contains(pt) && currentPage.Visible && currentPage.IsDrawn)
                {
                    page  = currentPage;
                    found = true;
                }
                if (found)
                {
                    break;
                }
            }
            return(page);
        }
Esempio n. 22
0
        void OnCollectionChanged(object sender, CollectionChangeEventArgs e)
        {
            vTabPage page = e.Element as vTabPage;

            if (e.Action == CollectionChangeAction.Add)
            {
                this.Controls.Add(page);
                this.OnTabPageChanged(new TabPageChangeEventArgs(page, ETabPageChangeType.Added));
            }
            else if (e.Action == CollectionChangeAction.Remove)
            {
                this.Controls.Remove(page);
                OnTabPageChanged(new TabPageChangeEventArgs(page, ETabPageChangeType.Removed));
            }
            else
            {
                this.OnTabPageChanged(new TabPageChangeEventArgs(page, ETabPageChangeType.Changed));
            }

            this.UpdateLayout();
            base.Invalidate();
        }
Esempio n. 23
0
        public void RemoveTab(vTabPage page)
        {
            int tabIndex = this._tabPages.IndexOf(page);

            if (tabIndex >= 0)
            {
                this.UnSelectPage(page);
                this._tabPages.Remove(page);
            }

            if (this._tabPages.Count > 0)
            {
                if (this._tabPages[tabIndex - 1] != null)
                {
                    this.SelectedPage = this._tabPages[tabIndex - 1];
                }
                else
                {
                    this.SelectedPage = this._tabPages.FirstVisible;
                }
            }
        }
Esempio n. 24
0
 public TabPageChangeEventArgs(vTabPage page, ETabPageChangeType type)
 {
     this._type = type;
     this._page = page;
 }
Esempio n. 25
0
 public TabPageClosingEventArgs(vTabPage page)
 {
     this._page = page;
 }
Esempio n. 26
0
 public void Assign(vTabPage page)
 {
     this.Visible = page.Visible;
     this.Text    = page.Text;
     this.Tag     = page.Tag;
 }
Esempio n. 27
0
        /// <summary>
        /// 绘制选项卡的Header
        /// </summary>
        private void OnDrawTabPage(Graphics g, vTabPage page)
        {
            Rectangle pageRect = Rectangle.Round(page.StripBounds);

            if (page.Selected)
            {
                g.DrawImage(
                    ImageToolbar_Hover,
                    pageRect,
                    new Rectangle(Point.Empty, ImageToolbar_Hover.Size),
                    GraphicsUnit.Pixel);
            }
            else
            {
                switch (page.StripState)
                {
                case EMouseState.Normal:
                case EMouseState.MouseLeave:
                    break;

                case EMouseState.MouseMove:
                case EMouseState.MouseDown:
                case EMouseState.MouseUp:
                    g.DrawImage(
                        ImageToolbar_Hover,
                        pageRect,
                        new Rectangle(Point.Empty, ImageToolbar_Hover.Size),
                        GraphicsUnit.Pixel);
                    break;
                }
            }
            if (page.Image != null)
            {
                Rectangle imageRect = new Rectangle();
                imageRect.X = pageRect.X + (pageRect.Width - 48) / 2;
                //imageRect.Y += 10;
                imageRect.Size = new Size(48, 48);
                g.DrawImage(
                    page.Image,
                    imageRect,
                    new Rectangle(Point.Empty, page.Image.Size),
                    GraphicsUnit.Pixel);
            }
            else
            {
                Rectangle imageRect = new Rectangle();
                imageRect.X    = pageRect.X + (pageRect.Width - 48) / 2;
                imageRect.Size = new Size(48, 48);
                g.DrawRectangle(Pens.Red, imageRect);
            }
            //计算文字的绘制区域
            if (page.Title != string.Empty)
            {
                SizeF      size     = g.MeasureString(page.Title, page.Font);
                RectangleF textRect = new RectangleF();
                textRect.X      = pageRect.X + (pageRect.Width - size.Width) / 2;
                textRect.Y      = pageRect.Height - 20;
                textRect.Width  = pageRect.Width;
                textRect.Height = 20;
                using (Brush brush = new SolidBrush(this.ForeColor))
                {
                    g.DrawString(page.Title, this.Font, brush, textRect, this._sf);
                }
            }
            page.IsDrawn = true;
        }
Esempio n. 28
0
 public override void Initialize(System.ComponentModel.IComponent component)
 {
     base.Initialize(component);
     this._tabPage = component as vTabPage;
 }
Esempio n. 29
0
 internal void UnSelectPage(vTabPage page)
 {
     page.Selected = false;
 }
Esempio n. 30
0
 public void AddTab(vTabPage page)
 {
     this.AddTab(page, false);
 }