Inheritance: RangeRegionEventArgs
Beispiel #1
0
 public virtual void OnRemovingRange(RangeRegionCancelEventArgs e)
 {
     if (RemovingRange != null)
     {
         RemovingRange(this, e);
     }
 }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
 public virtual void OnAddingRange(RangeRegionCancelEventArgs e)
 {
     if (AddingRange != null)
     {
         AddingRange(this, e);
     }
 }
Beispiel #4
0
        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
                                }
                            }
                        }
                    }
                }
            }
        }
Beispiel #5
0
        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());
        }
Beispiel #6
0
        /// <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);
        }
Beispiel #7
0
        /// <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;
        }
Beispiel #8
0
        /// <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;
        }
Beispiel #9
0
 public virtual void OnRemovingRange(RangeRegionCancelEventArgs e)
 {
     if (RemovingRange != null)
         RemovingRange(this, e);
 }
Beispiel #10
0
 public virtual void OnAddingRange(RangeRegionCancelEventArgs e)
 {
     if (AddingRange != null)
         AddingRange(this, e);
 }