如何在C#中实现代码折叠

时间:2010-03-06 14:37:14

标签: c# vsx folding

我开始在工作中使用COBOL / BASIC IDE(以替换我们目前从记事本略微提升的那个)。它将在C#中制作。管理层真的对实现一些Visual Studio类型的功能感兴趣,而一个重要的是代码折叠。我看过MSDN,但我没有看到任何折叠线的好方法(或添加展开/折叠按钮)。

我假设文本区域应该是RichTextBox。我在这里偏离轨道吗?我想可以使用某种经过修改的TreeView来完成,但这对我来说似乎有点不对劲。有没有办法做到这一点,我只是缺席了?

5 个答案:

答案 0 :(得分:11)

为什么不使用现有的IDE并对其进行扩展?从头开始写一个是一项艰巨的任务(你需要一个解析器,词法分析器,语法高亮等等),如果你需要支持多种语言(你提到COBOL和Basic),它就会变得更加复杂。

Notepad++具有语法着色,可以为其添加语言 - COBOL是默认情况下安装的语言之一。它支持代码折叠并有许多插件(你可以编写自己的插件,以满足你的需求)。

修改Eclipse是另一个优秀的IDE,具有类似的支持,并且在评论中提到有一个COBOL插件。

答案 1 :(得分:6)

我建议你看看SharpDevelop。它是一个非常好的IDE,内置了许多类似Visual Studio的功能。它是用C#编写的,完全支持代码折叠,语法突出显示多种语言。另外,它是LGPL许可下的开源软件。因此,如果您不希望将应用程序基于SharpDevelop,那么您仍然可以重用其中一些控件,如代码编辑器或窗口工具包。

您应该考虑将COBOL语言添加到SharpDevelop,而不是从头开始。如果你不能这样做,那么你仍然可以使用SharpDevelop代码作为如何使IDE工作良好的一个不错的参考。

答案 2 :(得分:4)

有时嵌入Eclipse或完整的编辑器是不合适的。由于某些其他原因,这是过度杀伤或超重或错误。我很欣赏其他帖子中提出的第一个倾向于不重新发明,但在某些情况下,一个小发明是必要的。例如,用于制作Stack Overflow帖子的文本框既不是Eclipse也不是嵌入式Visual Studio。我想知道为什么?

提出问题非常重要 - 构建或购买它? - 但有时候,正确的答案是构建它。


XPathVisualizer提供了一个用C#实现的代码折叠文本编辑器的简单示例,它基于RichTextBox。但它不是VB,它是一个XML编辑器。但一般原则适用。

这是一个看看它。

alt text http://i29.tinypic.com/1zwp5ix.jpg

要动态实现XML语法着色,在用户键入时,它使用单独的后台线程。描述原因和部分细节in a separate answer on Stack Overflow

你可以为你的COBOL / VB做类似的事情。 XPathVisualizer是开源的,使用MS-PL许可,因此您可以浏览和借阅。

答案 3 :(得分:3)

如果您的团队习惯于“Visual Studio功能”,那么我假设您在办公室使用Visual Studio。以下是我的建议:

  • 将您的IDE基于Visual Studio,原因如下:
    • 如果可能,请使用Visual Studio 2010。 SDK从2008年/早期开始 极大
    • 否则请使用Visual Studio 2008/2005。目前,我的所有商业IDE产品仅支持2005/2008。
    • 如果您的团队使用Visual Studio,他们会讨厌Eclipse。在这种情况下,除非您选择使用现有的 Eclipse插件,否则甚至不能考虑选项,从而节省了创建新IDE的时间。
  • 如果您的团队未使用Visual Studio 2010,则可以免费使用集成模式中的Visual Studio 2010 Shell(隔离模式不是您想要的) 。这使您现在可以将IDE用于IDE,如果团队稍后升级到Visual Studio 2010的完整版本之一,则您的语言的IDE将完全集成到完整版本中。 编辑:Visual Studio Shell基本上是Visual Studio的核心,不包含任何特定语言(C#,C ++,VB等)。 Microsoft免费提供此核心,对于有兴趣创建自己的语言支持的人来说,它是一个很好的选择。

在以下两个问题中阅读我的答案:

答案 4 :(得分:2)

编写完整的IDE是一项巨大的任务。我建议您尝试找到一个符合您需要的现有产品,或者对现有的开源IDE进行调整。

回答你的问题:我想Visual Studio IDE使用的是自定义控件,而不是RichText控件。