Pole tekstowe

W Aspose.Slides pole tekstowe jest reprezentowane przez AutoShape. Prawie każdy kształt może zawierać tekst, ale typowe pole tekstowe nie ma wypełnienia ani obramowania i wyświetla tylko tekst.

Ten przewodnik wyjaśnia, jak programowo dodawać, uzyskiwać dostęp i usuwać pola tekstowe.

Dodaj pole tekstowe

Pole tekstowe to po prostu AutoShape bez wypełnienia i obramowania oraz z sformatowanym tekstem. Oto jak je utworzyć:

public static void AddTextBox()
{
    using var presentation = new Presentation();
    var slide = presentation.Slides[0];

    // Utwórz kształt prostokąta (domyślnie wypełniony z obramowaniem i bez tekstu).
    var textBox = slide.Shapes.AddAutoShape(ShapeType.Rectangle, x: 50, y: 75, width: 150, height: 100);

    // Usuń wypełnienie i obramowanie, aby wyglądało jak typowe pole tekstowe.
    textBox.FillFormat.FillType = FillType.NoFill;
    textBox.LineFormat.FillFormat.FillType = FillType.NoFill;

    // Ustaw formatowanie tekstu.
    var paragraph = textBox.TextFrame.Paragraphs[0];
    var textFormat = paragraph.ParagraphFormat.DefaultPortionFormat;
    textFormat.FillFormat.FillType = FillType.Solid;
    textFormat.FillFormat.SolidFillColor.Color = Color.Black;

    // Przypisz właściwą treść tekstu.
    textBox.TextFrame.Text = "Some text...";
}

💡 Uwaga: Każdy AutoShape, który zawiera niepusty TextFrame, może działać jako pole tekstowe.

Uzyskaj dostęp do pól tekstowych według zawartości

Aby znaleźć wszystkie pola tekstowe zawierające określone słowo kluczowe (np. “Slide”), przeiteruj kształty i sprawdź ich tekst:

public static void AccessTextBox()
{
    using var presentation = new Presentation();
    var slide = presentation.Slides[0];

    foreach (var shape in slide.Shapes)
    {
        // Tylko AutoShapes mogą zawierać edytowalny tekst.
        if (shape is AutoShape autoShape)
        {
            if (autoShape.TextFrame.Text.Contains("Slide"))
            {
                // Wykonaj coś z pasującym polem tekstowym.
            }
        }
    }
}

Usuń pola tekstowe według zawartości

Ten przykład znajduje i usuwa wszystkie pola tekstowe na pierwszym slajdzie, które zawierają określone słowo kluczowe:

public static void RemoveTextBox()
{
    using var presentation = new Presentation();
    var slide = presentation.Slides[0];

    var shapesToRemove = slide.Shapes
        .Where(s => s is AutoShape autoShape && autoShape.TextFrame.Text.Contains("Slide"))
        .ToList();

    shapesToRemove.ForEach(shape => slide.Shapes.Remove(shape));
}

💡 Wskazówka: Zawsze twórz kopię kolekcji kształtów przed modyfikacją podczas iteracji, aby uniknąć błędów modyfikacji kolekcji.