public virtual void OnRemovingRange(RangeRegionCancelEventArgs e) { if (RemovingRange != null) { RemovingRange(this, e); } }
/// <summary> /// Prende un range che è già stato filtrato con solo le celle presenti nell'attuale range /// </summary> /// <param name="pRange"></param> /// <returns></returns> private bool InternalRemove(RangeRegion pRange) { pRange = Intersect(pRange); if (pRange.IsEmpty()) { return(true); //il range non è presente } pRange.m_bValidated = true; RangeRegionCancelEventArgs e = new RangeRegionCancelEventArgs(pRange); OnRemovingRange(e); //calling this method the range can change if (e.Cancel) { return(false); } if (pRange.m_bValidated == false) { pRange = Intersect(pRange); if (pRange.IsEmpty()) { return(true); //il range non è presente } } m_RangeCollection = Exclude(pRange).m_RangeCollection; OnRemovedRange(e); m_bValidated = false; return(true); }
public virtual void OnAddingRange(RangeRegionCancelEventArgs e) { if (AddingRange != null) { AddingRange(this, e); } }
private void Selection_RemovingRange(object sender, RangeRegionCancelEventArgs e) { //se è abilitato RowColSpan devo assicurarmi di selezionare la cella di origine e non quella che sfrutta il RowCol Span if (EnableRowColSpan) { RangeCollection rangesToRemove = e.RangeRegion.GetRanges(); for (int iRange = 0; iRange < rangesToRemove.Count; iRange++) { Range rng = rangesToRemove[iRange]; for (int r = rng.Start.Row; r <= rng.End.Row; r++) { for (int c = rng.Start.Column; c <= rng.End.Column; c++) { Cells.ICell l_Cell = this[r, c]; //N.B. questo metodo mi restituisce la cella reale (anche se questa posizione è occupata slo perchè in mee con Row/Col Span) if (l_Cell != null) { Range l_Range = l_Cell.Range; if (l_Range != new Range(new Position(r, c))) //se la cella occupa più righe o colonne { e.RangeRegion.Add(l_Range); //la seleziono tutta } } } } } } }
public override void OnRemovingRange(RangeRegionCancelEventArgs e) { base.OnRemovingRange(e); RangeRegionChangingEventArgs regionChanging = new RangeRegionChangingEventArgs(e.RangeRegion, new SourceGrid.RangeRegion(), new SourceGrid.RangeRegion()); PositionCollection exploredPos = new PositionCollection(); do { regionChanging.RegionToExclude.Clear(); regionChanging.RegionToInclude.Clear(); PositionCollection positions = e.RangeRegion.GetCellsPositions(); for (int i = 0; i < positions.Count; i++) { if (exploredPos.Contains(positions[i]) == false) { CellContext cellContext = new CellContext(Grid, positions[i]); Grid.Controller.OnSelectionRemoving(cellContext, regionChanging); exploredPos.Add(positions[i]); } } regionChanging.CurrentRegion.Add(regionChanging.RegionToInclude); regionChanging.CurrentRegion.Remove(regionChanging.RegionToExclude); } while (!regionChanging.RegionToExclude.IsEmpty() || !regionChanging.RegionToInclude.IsEmpty()); }
/// <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> /// Prende un range che è già stato filtrato con solo le celle presenti nell'attuale range /// </summary> /// <param name="pRange"></param> /// <returns></returns> private bool InternalRemove(RangeRegion pRange) { pRange = Intersect(pRange); if (pRange.IsEmpty()) return true; //il range non è presente pRange.m_bValidated = true; RangeRegionCancelEventArgs e = new RangeRegionCancelEventArgs(pRange); OnRemovingRange(e); //calling this method the range can change if (e.Cancel) return false; if (pRange.m_bValidated == false) { pRange = Intersect(pRange); if (pRange.IsEmpty()) return true; //il range non è presente } m_RangeCollection = Exclude(pRange).m_RangeCollection; OnRemovedRange(e); m_bValidated = false; return 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; }
public virtual void OnRemovingRange(RangeRegionCancelEventArgs e) { if (RemovingRange != null) RemovingRange(this, e); }
public virtual void OnAddingRange(RangeRegionCancelEventArgs e) { if (AddingRange != null) AddingRange(this, e); }