将文本添加到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());
}
}
听起来像是您需要跳过的常规障碍。我可能考虑改变的唯一一件事是,而不是调用调度程序,然后检查它是否有访问权,只是直接在对象上调用它。它应该看起来像:
TextBlock1.Dispatcher.BeginInvoke((Action)(() => /* logic here */ )
为您保存一个呼叫,但实际上相同。你需要把它揉进去,因为这是我的想法,但它应该会给你指明正确的方向。