GetChild

CompositeNode.GetChild method

يعيد عقدة فرعية رقم N تطابق النوع المحدد.

public Node GetChild(NodeType nodeType, int index, bool isDeep)
معامليكتبوصف
nodeTypeNodeTypeيحدد نوع العقدة الفرعية.
indexInt32مؤشر يعتمد على الصفر للعقدة الفرعية التي يجب تحديدها. يُسمح أيضًا بالمؤشرات السلبية وتشير إلى الوصول من النهاية، أي -1 تعني العقدة الأخيرة.
isDeepBooleanحقيقي لتحديد من جميع العقد الفرعية بشكل متكرر؛ خطأ شنيع للاختيار فقط من بين الأبناء المباشرين. راجع الملاحظات لمزيد من المعلومات.

قيمة الإرجاع

العقدة الفرعية التي تطابق المعايير أوباطل إذا لم يتم العثور على عقدة مطابقة.

ملاحظات

إذا كان المؤشر خارج النطاق،باطل تم إرجاعه.

لاحظ أن عقد العلامات (StructuredDocumentTag وSmartTag ) يتم اجتيازها حتى عندماisDeep =خطأ شنيع وGetChild يتم استدعاؤه لنوع العقدة غير الترميزية. على سبيل المثال، إذا تم تغليف التشغيل الأول في para بـStructuredDocumentTag ، سيتم إرجاعه مرة أخرىGetChild(Run ، 0،خطأ شنيع).

أمثلة

يوضح كيفية تطبيق خصائص نمط الجدول مباشرة على عناصر الجدول.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Table table = builder.StartTable();
builder.InsertCell();
builder.Write("Hello world!");
builder.EndTable();

TableStyle tableStyle = (TableStyle)doc.Styles.Add(StyleType.Table, "MyTableStyle1");
tableStyle.RowStripe = 3;
tableStyle.CellSpacing = 5;
tableStyle.Shading.BackgroundPatternColor = Color.AntiqueWhite;
tableStyle.Borders.Color = Color.Blue;
tableStyle.Borders.LineStyle = LineStyle.DotDash;

table.Style = tableStyle;

//تتعلق هذه الطريقة بخصائص نمط الجدول مثل تلك التي قمنا بتعيينها أعلاه.
doc.ExpandTableStylesToDirectFormatting();

doc.Save(ArtifactsDir + "Document.TableStyleToDirectFormatting.docx");

يوضح كيفية التنقل عبر مجموعة العقد الفرعية للعقدة المركبة.

Document doc = new Document();

// أضف تشغيلتين وشكلًا واحدًا كعقد فرعية إلى الفقرة الأولى من هذه الوثيقة.
Paragraph paragraph = (Paragraph)doc.GetChild(NodeType.Paragraph, 0, true);
paragraph.AppendChild(new Run(doc, "Hello world! "));

Shape shape = new Shape(doc, ShapeType.Rectangle);
shape.Width = 200;
shape.Height = 200;
// لاحظ أن 'CustomNodeId' لا يتم حفظه في ملف إخراج ولا يوجد إلا أثناء عمر العقدة.
shape.CustomNodeId = 100;
shape.WrapType = WrapType.Inline;
paragraph.AppendChild(shape);

paragraph.AppendChild(new Run(doc, "Hello again!"));

// قم بالتكرار خلال مجموعة الأطفال المباشرين للفقرة،
// وطباعة أي مسارات أو أشكال نجدها بالداخل.
NodeCollection children = paragraph.GetChildNodes(NodeType.Any, false);

Assert.AreEqual(3, paragraph.GetChildNodes(NodeType.Any, false).Count);

foreach (Node child in children)
    switch (child.NodeType)
    {
        case NodeType.Run:
            Console.WriteLine("Run contents:");
            Console.WriteLine($"\t\"{child.GetText().Trim()}\"");
            break;
        case NodeType.Shape:
            Shape childShape = (Shape)child;
            Console.WriteLine("Shape:");
            Console.WriteLine($"\t{childShape.ShapeType}, {childShape.Width}x{childShape.Height}");
            break;
    }

أنظر أيضا