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; }
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; }
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; }
private void OnAddReceive(NotificationMessageAction<AddReceiveInfo> info) { if (info.Notification == MsgToken.MSG_ADDRECEIVE) { _addReceiveCallback = info; _addReceiveInfo = (AddReceiveInfo)info.Target; SelectedElementChangedHandle(MouseState.None); } }
private void AddReceiveNotifycationCallBack(AddReceiveInfo info) { //清理工作 AdornerLayer.GetAdornerLayer(this._dragScope).Remove(this._adorner); this._adorner = null; this._dragScope.MouseMove -= draghandler; _isMouseLeftButtonDown = false; }