Ejemplo n.º 1
0
 private static void InnerEnumerate(
     DomElementList elements,
     ElementEnumerateEventHandler handler,
     ElementEnumerateEventArgs args,
     bool deeply)
 {
     foreach (DomElement element in elements)
     {
         args._Element    = element;
         args.CancelChild = false;
         handler(null, args);
         if (args.Cancel)
         {
             break;
         }
         if (args.CancelChild == false && deeply)
         {
             if (element is DomContainerElement)
             {
                 InnerEnumerate(((DomContainerElement)element).Elements, handler, args, deeply);
                 if (args.Cancel)
                 {
                     break;
                 }
             }
         }
         args.CancelChild = false;
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 遍历子孙元素
        /// </summary>
        /// <param name="elements">要遍历的元素列表</param>
        /// <param name="handler">遍历过程的委托对象</param>
        public static void Enumerate(
            DomElementList elements,
            ElementEnumerateEventHandler handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }
            ElementEnumerateEventArgs args = new ElementEnumerateEventArgs();

            InnerEnumerate(elements, handler, args, true);
        }