コード例 #1
0
        private void _itemsControl_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            IElement element = sender as IElement;
            if (_addReceiveInfo != null && _myScreenLayer.OperateEnviron == OperatEnvironment.DesignScreen)
            {
                _addReceiveInfo = null;
                _addReceiveCallback.Execute(null);
                this.Focus();
                SelectedElementChangedHandle(MouseState.None);
                e.Handled = true;
                return;
            }
            ObservableCollection<IElement> selectedElements = new ObservableCollection<IElement>();
            if (sender is RectLayer)
            {
                #region 点击图层,取消该图层上所有元素的选中状态
                for (int elementIndex = 0; elementIndex < ((RectLayer)sender).ElementCollection.Count; elementIndex++)
                {
                    ((RectLayer)sender).ElementCollection[elementIndex].ElementSelectedState = SelectedState.None;
                }
                #endregion
                for (int elementIndex = 0; elementIndex < ((RectLayer)sender).ElementCollection.Count; elementIndex++)
                {
                    if (!(((RectLayer)sender).ElementCollection[elementIndex] is RectElement))
                    {
                        continue;
                    }
                    if (((RectElement)((RectLayer)sender).ElementCollection[elementIndex]).ZOrder == -2)
                    {
                        #region 选中元素
                        RectElement rect1 = ((RectElement)((RectLayer)sender).ElementCollection[elementIndex]);
                        int index = 0;
                        for (int i = 0; i < ((RectLayer)sender).ElementCollection.Count; i++)
                        {
                            RectElement rect2 = ((RectElement)((RectLayer)sender).ElementCollection[i]);

                            if (Function.IsRectIntersect(rect1, rect2))
                            {
                                index = index + 1;
                                ((RectElement)((RectLayer)sender).ElementCollection[i]).ElementSelectedState = SelectedState.Selected;
                                if (index == 1)
                                {
                                    ((RectElement)((RectLayer)sender).ElementCollection[i]).ElementSelectedState = SelectedState.SpecialSelected;
                                }
                            }
                        }
                        ((RectLayer)sender).ElementCollection.RemoveAt(elementIndex);
                        #endregion
                    }
                }
            }
            else
            {
                #region 该图层上已经选中的元素
                //for (int elementIndex = 0; elementIndex < ((RectLayer)element.ParentElement).ElementCollection.Count; elementIndex++)
                //{
                //    if (((RectLayer)element.ParentElement).ElementCollection[elementIndex].ElementSelectedState != SelectedState.None)
                //    {
                //        selectedElements.Add(((RectLayer)element.ParentElement).ElementCollection[elementIndex]);
                //    }
                //}
                #endregion

                #region 点击矩形的处理
                //if ((Keyboard.GetKeyStates(Key.LeftCtrl) == KeyStates.Down || (Keyboard.GetKeyStates(Key.LeftCtrl) == (KeyStates.Down | KeyStates.Toggled))) ||
                //    (Keyboard.GetKeyStates(Key.RightCtrl) == KeyStates.Down || (Keyboard.GetKeyStates(Key.RightCtrl) == (KeyStates.Down | KeyStates.Toggled))))
                //{
                //    #region 按ctrl键
                //    if (ElementSelectedState != SelectedState.None)
                //    {
                //        #region 选中已经被选中的
                //        if (ElementSelectedState == SelectedState.SpecialSelected)
                //        {
                //            for (int selectedElementIndex = 0; selectedElementIndex < selectedElements.Count; selectedElementIndex++)
                //            {
                //                int zorder = ((RectElement)(selectedElements[selectedElementIndex])).ZOrder;
                //                if (zorder != ZOrder)
                //                {
                //                    int index = ((RectLayer)ParentElement).ElementCollection.IndexOf(selectedElements[selectedElementIndex]);
                //                    ((RectLayer)ParentElement).ElementCollection[index].ElementSelectedState = SelectedState.SpecialSelected;
                //                    break;
                //                }
                //            }
                //        }
                //        ElementSelectedState = SelectedState.None;
                //        #endregion
                //    }
                //    else
                //    {
                //        #region 选中还没有被选中
                //        if (selectedElements.Count != 0)
                //        {
                //            ElementSelectedState = SelectedState.Selected;
                //        }
                //        else
                //        {
                //            ElementSelectedState = SelectedState.SpecialSelected;
                //        }
                //        #endregion
                //    }
                //    #endregion
                //}
                //else
                //{
                #region 不按ctrl键
                //for (int selectedElementIndex = 0; selectedElementIndex < selectedElements.Count; selectedElementIndex++)
                //{
                //    int index = ((RectLayer)element.ParentElement).ElementCollection.IndexOf(selectedElements[selectedElementIndex]);
                //    if (element.ElementSelectedState == SelectedState.None)
                //    {
                //        ((RectLayer)element.ParentElement).ElementCollection[index].ElementSelectedState = SelectedState.None;
                //    }
                //    else
                //    {
                //        ((RectLayer)element.ParentElement).ElementCollection[index].ElementSelectedState = SelectedState.Selected;
                //    }
                //}
                //element.ElementSelectedState = SelectedState.Selected;
                #endregion
                //}
                #endregion
            }
            if (_myScreenLayer != null)
                Function.SetElementCollectionState(_myScreenLayer.ElementCollection, SelectedState.None);

            GetCurrentElementInfo();
            SelectedLayerAndElementValue.SelectedLayer = _myScreenLayer;
            SelectedLayerAndElementValue.GroupframeList = _groupframeList;
            SelectedLayerAndElementValue.SelectedInfoList = _currentSelectedElement;
            SelectedLayerAndElementValue.MainControlSize = new Size(this.ActualWidth, this.ActualHeight);
            Messenger.Default.Send<SelectedLayerAndElement>(SelectedLayerAndElementValue, MsgToken.MSG_SELECTEDLAYERANDELEMENT_CHANGED);
            e.Handled = true;
        }
コード例 #2
0
        private void Receive_MouseRightButtonDown(object sender, MouseButtonEventArgs e, IElement element)
        {
            //if (element is LineElement)
            //{
            //    return;
            //}
            FrameworkElement currentFramework = (FrameworkElement)sender;
            _copyPoint = e.GetPosition(this);
            if (_addReceiveInfo != null && _myScreenLayer.OperateEnviron == OperatEnvironment.DesignScreen)
            {
                _addReceiveInfo = null;
                _addReceiveCallback.Execute(null);
                SelectedElementChangedHandle(MouseState.None);
                e.Handled = true;
                return;
            }
            if (sender is MyRectLayerControl)
            {
                #region 点击图层的处理
                ((RectLayer)element).CLineType = ConnectLineType.Auto;
                foreach (int elementIndex in _currentSelectedElement.Keys)
                {
                    ObservableCollection<IRectElement> selectedGroupList = _currentSelectedElement[elementIndex].SelectedGroupElementList;
                    for (int i = 0; i < selectedGroupList.Count; i++)
                    {
                        selectedGroupList[i].ElementSelectedState = SelectedState.None;
                        if (selectedGroupList[i].EleType == ElementType.receive)
                        {
                            selectedGroupList[i].IsLocked = true;
                        }
                    }
                }
                #endregion
            }
            else
            {
                #region 点击矩形的处理
                if (element.ElementSelectedState == SelectedState.None)
                {
                    element.IsLocked = false;
                }
                else
                {
                    element.IsLocked = true;
                }
                #region 不按ctrl键
                if (element.ElementSelectedState == SelectedState.None)
                {
                    Function.SetElementCollectionState(_selectedElementCollection, SelectedState.None);
                    if (element.GroupName != -1)
                    {
                        ObservableCollection<IRectElement> noSelectedGroupElement = _currentSelectedElement[element.GroupName].NoSelectedGroupElementList;
                        ObservableCollection<IRectElement> selectedGroupElement = _currentSelectedElement[element.GroupName].SelectedGroupElementList;
                        Function.SetElementCollectionState(noSelectedGroupElement, SelectedState.Selected);
                        Function.SetElementCollectionState(selectedGroupElement, SelectedState.Selected);
                    }
                    element.ElementSelectedState = SelectedState.Selected;
                }
                #endregion

                #endregion
            }
            GetCurrentElementInfo();
            RightButtonDownChangedHandle(element);
            e.Handled = true;
        }
コード例 #3
0
        private void _itemsControl_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            IElement element = sender as IElement;
            if (_addReceiveInfo != null && _myScreenLayer.OperateEnviron == OperatEnvironment.DesignScreen)
            {
                _addReceiveInfo = null;
                _addReceiveCallback.Execute(null);
                this.Focus();
                SelectedElementChangedHandle(MouseState.None);
                e.Handled = true;
                return;
            }
            ObservableCollection<IElement> selectedElements = new ObservableCollection<IElement>();
            if (sender is RectLayer)
            {
                CancelAllElementsSeleteState(sender);
            }
            if (_myScreenLayer != null)
                Function.SetElementCollectionState(_myScreenLayer.ElementCollection, SelectedState.None);

            GetCurrentElementInfo();
            SelectedLayerAndElementValue.SelectedLayer = _myScreenLayer;
            SelectedLayerAndElementValue.GroupframeList = _groupframeList;
            SelectedLayerAndElementValue.SelectedInfoList = _currentSelectedElement;
            SelectedLayerAndElementValue.MainControlSize = new Size(this.ActualWidth, this.ActualHeight);
            Messenger.Default.Send<SelectedLayerAndElement>(SelectedLayerAndElementValue, MsgToken.MSG_SELECTEDLAYERANDELEMENT_CHANGED);
            e.Handled = true;
        }
コード例 #4
0
 private void OnAddReceive(NotificationMessageAction<AddReceiveInfo> info)
 {
     if (info.Notification == MsgToken.MSG_ADDRECEIVE)
     {
         _addReceiveCallback = info;
         _addReceiveInfo = (AddReceiveInfo)info.Target;
         SelectedElementChangedHandle(MouseState.None);
     }
 }
コード例 #5
0
        private void AddReceiveNotifycationCallBack(AddReceiveInfo info)
        {
            //清理工作
            AdornerLayer.GetAdornerLayer(this._dragScope).Remove(this._adorner);
            this._adorner = null;

            this._dragScope.MouseMove -= draghandler;
            _isMouseLeftButtonDown = false;
        }