I have been trying to set the text of a TextBox for quite some time now without any luck. I’ve tried both the “Builder.Write()” approach, and the textbox.TextPath.Text route. Neither work. The TextBox Shape is always empty.
Paragraph parentPara = (Paragraph) run.ParentNode;
Shape textbox = new Shape(doc, ShapeType.TextBox);
textbox.Stroked = false;
textbox.Width = 40;
textbox.Height = 40;
textbox.Fill.Opacity = 0;
textbox.BehindText = true;
textbox.TextPath.Text = "TEST";
Just figured out how to get around this. I just created a paragraph and a run with the numbering and appended it to the TextBox.
In the examples I was able to find on the Aspose forums, I have not seen this as a requirement, so if anyone understands this subject better than I, please let us know whether inserting a paragraph inside a TextBox is required in order to get text to render.
Paragraph textboxPara = new Paragraph(_documentNode);
Run textboxParaRun = new Run(_documentNode);
textboxParaRun.Text = stepNumber;
Thanks for your inquiry. Yes, you need to insert a Paragraph inside text box Shape. Please also try executing the following example:
// Create a blank document.
Document doc = new Document();
// Create a new shape of type TextBox
Shape textBox = new Shape(doc, ShapeType.TextBox);
// Set some settings of the textbox itself.
// Set the wrap of the textbox to inline
textBox.WrapType = WrapType.None;
// Set the horizontal and vertical alignment of the text inside the shape.
textBox.HorizontalAlignment = HorizontalAlignment.Center;
textBox.VerticalAlignment = VerticalAlignment.Top;
// Set the textbox height and width.
textBox.Height = 50;
textBox.Width = 200;
// Set the textbox in front of other shapes with a lower ZOrder
textBox.ZOrder = 2;
// Let's create a new paragraph for the textbox manually and align it in the center. Make sure we add the new nodes to the textbox as well.
Paragraph para = textBox.FirstParagraph;
para.ParagraphFormat.Alignment = ParagraphAlignment.Center;
// Add some text to the paragraph.
Run run = new Run(doc);
run.Text = "Content in textbox";
// Append the textbox to the first paragraph in the body.
// Save the output
doc.Save(MyDir + @"out.docx");
I hope, this helps.