将文本添加到TextBlock中,每次一个字符

本文关键字:字符 一个 添加 文本 TextBlock | 更新日期: 2023-09-27 18:08:28

我发布这篇文章是为了让任何觉得有用的人都可以使用这些代码。

根据Noctis的建议略微减少代码。

StringBuilder DescriptionText = new StringBuilder();
async void RunDescription(StringBuilder description)
{
    DescriptionText = description;
    await Task.Delay(1000);  // Short delay before the text starts printing so the window has time to load
    new Thread(AddTextToTextBlock).Start();
}
void TextBlockDispatcher(string text)
{
    TextBlock1.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => TextBlock1.Inlines.Add(text)));
}
void AddTextToTextBlock()
{
    foreach (char c in DescriptionText.ToString())
    {
        Thread.Sleep(30);
        TextBlockDispatcher(c.ToString());
    }
}

将文本添加到TextBlock中,每次一个字符

听起来像是您需要跳过的常规障碍。我可能考虑改变的唯一一件事是,而不是调用调度程序,然后检查它是否有访问权,只是直接在对象上调用它。它应该看起来像:

TextBlock1.Dispatcher.BeginInvoke((Action)(() => /* logic here */ )

为您保存一个呼叫,但实际上相同。你需要把它揉进去,因为这是我的想法,但它应该会给你指明正确的方向。