Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与处理文本的本地副本相比,文本框控制访问的效率更高_C#_String_Textbox - Fatal编程技术网

C# 与处理文本的本地副本相比,文本框控制访问的效率更高

C# 与处理文本的本地副本相比,文本框控制访问的效率更高,c#,string,textbox,C#,String,Textbox,我正在编写一个类似记事本的小应用程序,带有一些额外的功能 我使用一个丰富的文本框作为主要区域。我的问题是在对文本框的内容执行操作时,如代码格式化、突出显示等,这可能需要读取每个字符并在必要时替换。偶尔在文本索引之间向后移动。 对于“自动格式化”按钮,什么更有效: 直接在textbox.text上阅读 财产。附加格式化的 将字符串入stringbuilder& 最后返回文本框(使用 toString函数) 或 将整个内容复制到 字符串,按字符读取 将角色转换为新角色 stringbuilder…

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

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

  • 直接在textbox.text上阅读 财产。附加格式化的 将字符串入stringbuilder& 最后返回文本框(使用 toString函数)

  • 将整个内容复制到 字符串,按字符读取 将角色转换为新角色 stringbuilder…..以及如上所述。 这个方法不会产生额外的错误吗 中大文本内容的副本 文本框?还是说它的效率比 访问textbox控件 反复


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

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


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

谢谢您的回复。我想主要问题已经解决了。关于动态格式化,我知道创建格式化程序并不是那么容易,但我希望做的工作只是以整洁的方式保持大括号的标签,与IDE没有什么大区别。这当然更容易,但是您仍然需要确保正在平衡的大括号不是字符串文字(如“(”)。