/// <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);
}