Exemplo n.º 1
0
 private void MyEnumerate(ElementEnumerateEventHandler handler, ElementEnumerateEventArgs args)
 {
     foreach (DomElement element in this.Elements)
     {
         args._Parent     = this;
         args._Element    = element;
         args.CancelChild = false;
         handler(this, args);
         if (args.Cancel)
         {
             break;
         }
         if (args.CancelChild == false)
         {
             if (element is DomContainerElement)
             {
                 ((DomContainerElement)element).MyEnumerate(handler, args);
                 if (args.Cancel)
                 {
                     break;
                 }
             }
         }
         args.CancelChild = false;
     }
 }
Exemplo n.º 2
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;
     }
 }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 遍历子孙元素
        /// </summary>
        /// <param name="includeSelfNode">是否包含节点本身</param>
        /// <param name="handler">遍历过程的委托对象</param>
        public void Enumerate(ElementEnumerateEventHandler handler, bool includeSelfNode)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }
            ElementEnumerateEventArgs args = new ElementEnumerateEventArgs();

            if (includeSelfNode)
            {
                args._Parent  = this.Parent;
                args._Element = this;
                handler(this, args);
                if (args.Cancel || args.CancelChild)
                {
                    return;
                }
            }
            MyEnumerate(handler, args);
        }
Exemplo n.º 5
0
 /// <summary>
 /// 遍历子孙文档元素
 /// </summary>
 /// <param name="handler">遍历过程的委托对象</param>
 public void Enumerate(ElementEnumerateEventHandler handler)
 {
     Enumerate(handler, false);
 }