/// <summary> /// Prende un range che è già stato filtrato con solo le celle non presenti nell'attuale range /// </summary> /// <param name="pRange"></param> /// <returns></returns> private bool InternalAdd(RangeRegion pRange) { if (Contains(pRange)) { return(true); } if (pRange.Contains(this)) //change all the contents with the new range { RangeRegion existingRange = new RangeRegion(this); m_RangeCollection.Clear(); m_RangeCollection.AddRange(pRange.m_RangeCollection); pRange = pRange.Exclude(existingRange); } else { pRange = pRange.Exclude(this); if (pRange.IsEmpty()) { return(true); //il range è vuoto } pRange.m_bValidated = true; RangeRegionCancelEventArgs e = new RangeRegionCancelEventArgs(pRange); OnAddingRange(e); //calling this method the range can change if (e.Cancel) { return(false); } if (pRange.m_bValidated == false) { pRange = pRange.Exclude(this); if (pRange.IsEmpty()) { return(true); //il range è vuoto } } for (int rToAdd = 0; rToAdd < pRange.m_RangeCollection.Count; rToAdd++) { Range rangeToAdd = pRange.m_RangeCollection[rToAdd]; m_RangeCollection.Add(rangeToAdd); } } OnAddedRange(new RangeRegionCancelEventArgs(pRange)); m_bValidated = false; return(true); }
/// <summary> /// Check if the positions saved are still valid, for example if all the selected cells are still valid positions, if not the selection are removed without calling any other methods. /// </summary> public virtual void CheckPositions() { Range complete = CompleteRange; if (m_MouseCellPosition.IsEmpty() == false && CompleteRange.Contains(m_MouseCellPosition) == false) m_MouseCellPosition = Position.Empty; if (m_MouseDownPosition.IsEmpty() == false && CompleteRange.Contains(m_MouseDownPosition) == false) m_MouseDownPosition = Position.Empty; if (mDragCellPosition.IsEmpty() == false && CompleteRange.Contains(mDragCellPosition) == false) mDragCellPosition = Position.Empty; //If the selection contains some invalid cells reset the selection state. RangeRegion completeRegion = new RangeRegion(complete); if ( (Selection.ActivePosition.IsEmpty() == false && complete.Contains(Selection.ActivePosition) == false) || (Selection.IsEmpty() == false && completeRegion.Contains(Selection.GetSelectionRegion()) == false) ) Selection.ResetSelection(false); }
/// <summary> /// Check if the positions saved are still valid, for example if all the selected cells are still valid positions, if not the selection are removed without calling any other methods. /// </summary> public virtual void CheckPositions() { Range complete = CompleteRange; if (m_MouseCellPosition.IsEmpty() == false && CompleteRange.Contains(m_MouseCellPosition) == false) m_MouseCellPosition = Position.Empty; if (m_MouseDownPosition.IsEmpty() == false && CompleteRange.Contains(m_MouseDownPosition) == false) m_MouseDownPosition = Position.Empty; if (mDragCellPosition.IsEmpty() == false && CompleteRange.Contains(mDragCellPosition) == false) mDragCellPosition = Position.Empty; //If the selection contains some invalid cells reset the selection state. RangeRegion completeRegion = new RangeRegion(complete); if ( (Selection.ActivePosition.IsEmpty() == false && complete.Contains(Selection.ActivePosition) == false) || (Selection.IsEmpty() == false && completeRegion.Contains(Selection.GetSelectionRegion()) == false) ) // AlanP: Sep 2013. This gets called when we delete rows (eg FPreviouslySelectedDetailRow.Delete()) // so we want to suppress selection_changed at this point because we will call SelectRowInGrid next Selection.ResetSelection(false, true); }
/// <summary> /// Prende un range che è già stato filtrato con solo le celle non presenti nell'attuale range /// </summary> /// <param name="pRange"></param> /// <returns></returns> private bool InternalAdd(RangeRegion pRange) { if (Contains(pRange)) return true; if (pRange.Contains(this)) //change all the contents with the new range { m_RangeCollection.Clear(); m_RangeCollection.AddRange(pRange.m_RangeCollection); pRange = pRange.Exclude(this); } else { pRange = pRange.Exclude(this); if (pRange.IsEmpty()) return true; //il range è vuoto pRange.m_bValidated = true; RangeRegionCancelEventArgs e = new RangeRegionCancelEventArgs(pRange); OnAddingRange(e); //calling this method the range can change if (e.Cancel) return false; if (pRange.m_bValidated == false) { pRange = pRange.Exclude(this); if (pRange.IsEmpty()) return true; //il range è vuoto } for (int rToAdd = 0; rToAdd < pRange.m_RangeCollection.Count; rToAdd++) { Range rangeToAdd = pRange.m_RangeCollection[rToAdd]; m_RangeCollection.Add(rangeToAdd); } } OnAddedRange(new RangeRegionCancelEventArgs(pRange)); m_bValidated = false; return true; }