コード例 #1
0
        void DragWindow_Evt_MoveWindow(object obj, object header, Point startPoint)
        {
            _curMoveWindow = new DockingWindowElement(header, obj, parentWin, startPoint);

            //修改弹出框名称
            _curMoveWindow.CreateDragWindow("测试", false, parentWin);
            _curMoveWindow.DragWindow.MouseLeave     += DragWindow_MouseLeave;
            _curMoveWindow.DragWindow.Evt_MoveWindow += DragWindow_Evt_MoveWindow;
            _tbPanel.CaptureMouse();
            moveNewWindow = true;
        }
コード例 #2
0
        void DockingTabControl_MouseMove(object sender, MouseEventArgs e)
        {
            var a = e.Source as TabItem;
            var b = e.GetPosition(a);
            var c = e.GetPosition(this);
            var d = PointToScreen(c);

            if (e.LeftButton == MouseButtonState.Pressed)
            {
                if (moveNewWindow)
                {
                    //更新窗口位置
                    _curMoveWindow.UpdateWindowLocation(d);

                    //判断是否拖入TabPanel
                    if ((c.X >= _tabPanelEmt.TabPanelStartPoint.X && c.X <= _tabPanelEmt.TabPanelStartPoint.X + _tabPanelEmt.TabPanelSize.Width) &&
                        (c.Y >= _tabPanelEmt.TabPanelStartPoint.Y && c.Y <= _tabPanelEmt.TabPanelStartPoint.Y + _tabPanelEmt.TabPanelSize.Height))
                    {
                        if (!this.Items.Contains(_curMoveWindow.DragTargetHeader))
                        {
                            //拖进来
                            this.Items.Add(_curMoveWindow.DragTargetHeader);
                        }
                    }
                    else
                    {
                        //拖出去
                        if (this.Items.Contains(_curMoveWindow.DragTargetHeader))
                        {
                            this.Items.Remove(_curMoveWindow.DragTargetHeader);
                        }
                    }
                }
                else
                {
                    if (_isBtnDown && a != null)
                    {
                        if (_curMoveWindow != null)
                        {
                            //更新窗口位置
                            _curMoveWindow.UpdateWindowLocation(d);
                        }
                        if ((b.X < 0 || b.Y < 0 || b.X > a.ActualWidth || b.Y > a.ActualHeight) && _curMoveWindow == null)
                        {
                            _curMoveWindow = new DockingWindowElement(a, a.Content, parentWin, d);
                            _curMoveWindow.CreateDragWindow(a.Header.ToString(), true, parentWin);
                            _curMoveWindow.DragWindow.Evt_MoveWindow += DragWindow_Evt_MoveWindow;
                            _curMoveWindow.DragWindow.MouseLeave     += DragWindow_MouseLeave;
                            a.Opacity = 0.4;
                        }
                    }
                }
            }
        }
コード例 #3
0
 void DockingTabControl_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
     //判断是否拖入其中
     if (moveNewWindow)
     {
         var c = e.GetPosition(this);
         if ((c.X >= _tabPanelEmt.TabPanelStartPoint.X && c.X <= _tabPanelEmt.TabPanelStartPoint.X + _tabPanelEmt.TabPanelSize.Width) &&
             (c.Y >= _tabPanelEmt.TabPanelStartPoint.Y && c.Y <= _tabPanelEmt.TabPanelStartPoint.Y + _tabPanelEmt.TabPanelSize.Height))
         {
             if (this.Items.Contains(_curMoveWindow.DragTargetHeader))
             {
                 var newTabItem = _curMoveWindow.DragTargetHeader as TabItem;
                 if (newTabItem != null)
                 {
                     newTabItem.Opacity = 1;
                 }
                 _curMoveWindow.DragWindow.Close();
             }
             else
             {
                 if (this.Items.Contains(_curMoveWindow.DragTargetHeader))
                 {
                     this.Items.Remove(_curMoveWindow.DragTargetHeader);
                 }
             }
         }
         else
         {
             _curMoveWindow.DragWindow.Topmost = false;
         }
         moveNewWindow = false;
         _tbPanel.ReleaseMouseCapture();
         _curMoveWindow = null;
     }
     else
     {
         _isBtnDown = false;
         var a = e.Source as TabItem;
         if (a != null)
         {
             a.ReleaseMouseCapture();
         }
         if (_curMoveWindow != null)
         {
             this.Items.Remove(_curMoveWindow.DragTargetHeader);
             _curMoveWindow.DragWindow.Topmost = false;
             _curMoveWindow = null;
         }
     }
 }