我正在加载一个大文本(100 000+ 行文本),textview 需要很长时间才能显示它。我知道很难加载这么多的文本,但是至少有一种方法可以在加载所有文本之前禁用 textview 控件,这样用户就不能滚动它,或者在它被加载到 textview 期间进行修改?
我宁愿将其变灰(敏感 = false)并在加载文本时显示“正在加载”。或者,如果可能的话,只需以某种方式加载它即可立即加载(例如仅渲染部分文本)
我现在使用的代码真的很简单,巨大的文字在 StringBuilder 里面
第一个变体:
// everything is StringBuilder
simpleview.Buffer.Text = everything.ToString();
if (ScrollingEnabled)
{
simpleview.ScrollToIter(simpleview.Buffer.GetIterAtLine(ContentLines.Count), 0, true, 0, 0);
}
第二个(在我看来更快一点)
simpleview.Buffer.Text = "";
simpleview.Buffer.InsertAtCursor(everything.ToString());
if (ScrollingEnabled)
{
simpleview.ScrollToIter(simpleview.Buffer.GetIterAtLine(ContentLines.Count), 0, true, 0, 0);
}
我不需要一次显示所有文本,但我想让用户尽可能滚动和浏览所有文本。另外我想注意到,这不仅对于 100 000 行来说很慢,甚至对于 1000 行来说实际上也很慢,而且那是一段相当短的文本......