如何在WPF中使RichTextBox自动调整大小?

4
如何使RichTextBox自动调整大小?我希望我的rich textbox能够适应我为其分配的任何文本,而不需要滚动条。谢谢。
3个回答

1
        Bitmap objBmpImage = new Bitmap(1, 1);

        int intWidth = 0;
        int intHeight = 0;

        // Create the Font object for the image text drawing.
        Font objFont = new Font("Arial", 20, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel);

        // Create a graphics object to measure the text's width and height.
        Graphics objGraphics = Graphics.FromImage(objBmpImage);

        // This is where the bitmap size is determined.
        intWidth = (int)objGraphics.MeasureString(sImageText, objFont).Width;
        intHeight = (int)objGraphics.MeasureString(sImageText, objFont).Height;

你已经有了设置文本框的字符串。首先,你可以像上面那样计算来测量richtextbox的适当大小。然后你只需要在文本框中设置intWidth和intHeight即可。

我认为这会对你有所帮助。


这看起来不错,但我想让它在包含RichTextBox的Stack Panel大小改变时自动调整大小。我通过将HorizontalAlignment和VerticalAlignment设置为Stretch之外的其他值(默认值)来实现它,就像Dean Chalk回答我的那样。但我仍然有另一个问题,在Dean Chalk评论区里我会说出来。 :) 谢谢DiainWate :) - Hassan Ibrahem

1
HorizontalAlignmentVerticalAlignment设置为除Stretch(默认值)以外的其他值。这将使TextBox缩小以适应其内容。然后,将其放入具有OrientationHorizontalStackPanel中,它将不会垂直滚动,而是被包含面板裁剪,我认为这正是您想要的。如果您希望包含面板根据文本调整大小,则需要相应地配置面板。

1
非常感谢Dean Chalk,这很有用,但我仍然有一个问题,我的richTextBox会占据放置它的任何东西的宽度,比如stack Panel的宽度,但我想让它的宽度适应其内容。请帮帮我。提前致谢。 - Hassan Ibrahem
1
不幸的是,即使将HorizontalAlignment设置为left/right/center,RichTextBox仍会水平拉伸。这可能与它持有FlowDocument有关。 - Vimes

-1

尝试使用ViewBox

<Viewbox>
    <RichTextBox />
</Viewbox>

1
这完全没有回答问题。您的XAML将缩放TextBox以适应容器(并且也会缩放文本)。问题是“如何确保RichTextBox在内部文本变长时变得更大”。 - Eilistraee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接