【问题标题】:efficiency in textbox control access vs working on local copy of text文本框控制访问与处理本地文本副本的效率
【发布时间】:2010-09-05 00:43:32
【问题描述】:

我正在编写一个类似记事本的小应用程序,具有一些额外的功能。

我使用富文本框作为主要区域。我的问题是在对文本框的内容执行操作时,例如代码格式、突出显示等,这可能需要读取每个字符并在必要时进行替换。偶尔跨文本索引移动。 对于自动格式化按钮,什么会更有效:

  • 直接在textbox.text上阅读 财产。附加格式化的 将字符串字符转换为字符串生成器 & 最后回到文本框(使用 toString 函数)。

  • 将整个内容复制到一个 字符串,读取字符 性格变成新的 stringbuilder .....和上面一样。 这种方法不会产生额外的 中大文本内容的副本 文本框?还是比它更有效 访问文本框控件 重复?

如果可能的话,一些关于在文本框代码中跟踪函数、括号、大括号等(用于动态代码格式化)的想法也会有所帮助。

【问题讨论】:

    标签: c# string textbox


    【解决方案1】:

    因为您将不得不解析代码以进行格式化,所以我不会从文本框本身执行此操作。我会将整个文本框内容复制到一个字符串中并从字符串中读取字符。这是因为就程序本身而言,与任何控件交互都会增加另一层复杂性。您需要首先访问 Textbox 控件,然后访问它的文本的内部表示来获取字符,而不是访问 String 变量来直接获取字符。这是一个额外的步骤,对于大量文本,它会降低您的应用程序的速度。

    要进行实际的解析和格式化,您可以编写自己的标记器和格式化器,也可以使用已经构建好的。我也不能提供太多帮助,但不幸的是,它并不像跟踪牙套那么简单。看看 Sourceforge 或类似网站;他们可能有格式化程序,您可以学习这些格式化程序来帮助您构建自己的程序。

    【讨论】:

    • 感谢您的回复。我想主要问题已经解决了。关于即时格式化,我知道创建格式化程序并不容易,但我希望完成的工作只是保持大括号以整洁的方式显示,这与 IDE 所做的没什么两样。
    • 这肯定更容易,但是您仍然需要确保要平衡的大括号不在字符串文字中(例如“(”)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多