/// <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); }
public RangeRegion Exclude(RangeRegion pRange) { RangeRegion excludedRange = new RangeRegion(this); if (excludedRange.IsEmpty() == false) { for (int rToCheck = 0; rToCheck < pRange.m_RangeCollection.Count; rToCheck++) { excludedRange = excludedRange.Exclude(pRange.m_RangeCollection[rToCheck]); } } return(excludedRange); }
/// <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; }
public RangeRegion Exclude(RangeRegion pRange) { RangeRegion excludedRange = new RangeRegion(this); if (excludedRange.IsEmpty() == false) { for (int rToCheck = 0; rToCheck < pRange.m_RangeCollection.Count; rToCheck++) { excludedRange = excludedRange.Exclude( pRange.m_RangeCollection[rToCheck] ); } } return excludedRange; }