加载大量文本的方法。

Wenyan Zhang (Shanghai Wicresoft Co,.Ltd.) 27,516 信誉分 Microsoft 供应商
2024-05-06T08:29:20.9566667+00:00

大家好。我使用 maui 8.0, VS 17.9 预览版 和 android14 模拟器。有没有一种方法可以在不阻塞编辑器控件的情况下将大量文本加载到编辑器控件。目前我使用这个语句 editor.text = bigtext; 这会冻结应用程序。我有一个想法,当用户滚动编辑器文本时,以块的方式添加文本,应用程序将动态加载大块文本,但我不知道该怎么做。有人可以帮忙吗?谢谢。

 

此问题整理于:https://learn.microsoft.com/en-us/answers/questions/1456406/method-of-moving-big-amount-of-text

.NET MAUI
.NET MAUI
一种 Microsoft 开源框架,用于构建跨移动设备、平板电脑、台式机的原生设备应用程序。
52 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Yonglun Liu (Shanghai Wicresoft Co,.Ltd.) 37,266 信誉分 Microsoft 供应商
    2024-05-06T08:46:16.1533333+00:00

    你好,

    编辑器没有滚动事件,因此无法以这种方式实现此功能。

    您可以使用按钮来提醒用户是否可以加载更多文本。

    在下面的示例中,应用程序使用一个分页器,该分页器以 500 个字符的步长加载,如果仍有可加载的数据,则按钮将显示“查看更多”。

    <Editor x:Name="edi"/>
    <Button x:Name="more_button"/>
     
    int cut_lenth = 500; //The size of the pagination
    int index = 0;
    //pagination
    private ArrayList GetSeparateSubString(string txtString, int charNumber)
    {
        ArrayList arrlist = new ArrayList();
        string tempStr = txtString;
        for (int i = 0; i < tempStr.Length; i += charNumber)
        {
            if ((tempStr.Length - i) > charNumber)
            {
                arrlist.Add(tempStr.Substring(i, charNumber));
            }
            else
            {
                arrlist.Add(tempStr.Substring(i));
            }
        }
        return arrlist;
     
    }
    public MainPage()
    {
        InitializeComponent();
        string str = "";
        for (int i = 0; i < 700; i++)
        {
            str += i.ToString();
        }
        var pages = GetSeparateSubString(str, cut_lenth);
        if (pages.Count > index)
        {
            edi.Text = pages[index].ToString();
            index++;
            more_button.Text = "See More";
            more_button.Clicked += (s, e) =>
            {
                if (pages.Count > index)
                {
                    edi.Text += pages[index].ToString();
                    index++;
                    if (pages.Count <= index)
                    {
                        more_button.Text = "Finished";
                    }
                }
            };
        }
        else
        {
            more_button.Text = "Finished";
        }
    }
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助