Ejemplo n.º 1
0
        protected override void OnDragDrop(DragEventArgs drgevent)
        {
            tp_mask.Visible = false;

            if (dragTo == DragTo.None)
            {
                return;
            }

            var data = drgevent.Data.GetData(typeof(DragData)) as DragData;

            if (data == null)
            {
                return;
            }

            if (tpanel.TabPages.Count == 1 && data.Id == Id)
            {
                return;
            }

            if (dragTo == DragTo.Center)
            {
                if (data.Id == Id)
                {
                    return;
                }
                tpanel.TabPages.Add(data.Tab);

                tpanel.Visible = true;
                if (spanel != null)
                {
                    spanel.Visible = false;
                }
            }
            else
            {
                if (tpanel.TabPages.Count == 1 && data.Id == Id)
                {
                    return;
                }

                var tps1 = new List <TabPage>();
                var tps2 = new List <TabPage>();

                tps1.Add(data.Tab);
                tpanel.TabPages.Remove(data.Tab);
                tps2.AddRange(tpanel.TabPages.Cast <TabPage>().ToArray());

                InitSpanel();

                if (dragTo == DragTo.Top || dragTo == DragTo.Left)
                {
                    spanel.SetTabs(tps1.ToArray(), tps2.ToArray());
                }
                else
                {
                    spanel.SetTabs(tps2.ToArray(), tps1.ToArray());
                }

                if (dragTo == DragTo.Top || dragTo == DragTo.Bottom)
                {
                    spanel.SetDirection(Orientation.Horizontal);
                }
                else
                {
                    spanel.SetDirection(Orientation.Vertical);
                }

                dragTo = DragTo.None;

                tpanel.Visible = false;
                spanel.Visible = true;
            }

            data.Source.DropDone();
        }