Click here to Skip to main content
6,822,123 members and growing! (15,148 online)
Email Password   helpLost your password?
Desktop Development » Edit Controls » General     Intermediate License: The Code Project Open License (CPOL)

CodeTextBox - another RichTextBox control with syntax highlightning and intellisense

By Tamas Honfi

A RichTextBox control with syntax highlightning and intellisense.
C# (C#1.0, C#2.0, C#3.0), Windows, .NET, Dev
Posted:8 Sep 2008
Views:27,419
Bookmarked:95 times
printPrint   add Share
      Discuss Discuss   Broken Article?Report  
23 votes for this article.
Popularity: 6.25 Rating: 4.59 out of 5

1
1 vote, 4.3%
2
2 votes, 8.7%
3
3 votes, 13.0%
4
17 votes, 73.9%
5

Introduction

I needed a script-editor control for one of my projects, with syntax highlighting and intellisense for more comfort. I did a search on CodeProject and Google, but didn't find any - just separate solutions for one of the two functions... The one I found with both syntax highlighting and intellisense just wasn't flexible enough for me, because it could be used only for C#, and only could handle classes (intellisense popped up after pressing the . key). As I wanted to use this mostly for LUA, this simply wasn't enough. I decided to use this control as a sample, and write my own, flexible one... After a few days, I came out with this: I have a flexible syntax-highlighter, with intellisense. :) I can edit everything in design mode, for example, the intellisense hotkey, or the scope-operator's list... Yes, I can handle not just the point, but more like ::, or ->, with C++ language support in mind. :)

Using the code

I designed the CodeTextBox control to be easy to work with: you can edit all the necessary properties in design mode as well, under the CodeTextBox category.

CodeTextBox properties

There're some things that I couldn't do automatically, or put in Design mode...

  • If you put text in the CodeTextBox programmatically, you should update syntax highlighting to get the proper results.
  • You can do it like this: codeTextBox1.UpdateSyntaxHightlight();.

  • I used the built-in TreeView control to store intellisense's data. I know it's a waste of resources, but it was a fast solution for now, and I need to give some instructions on how to use it, because there's a lot of things there...
  • To build up the intellisense-tree, you should add items to the intellisense-tree's nodes. I use the node's Name and Tag attributes for intellisense. Name should contain the name of the intellisense item, Tag should contain one of the following: class, event, interface, namespace, method, or property. Intellisense will assign images before the names based on this Tag property.

Limitations, Ideas

I know that it's not perfect yet, but hey, it's useable... :) Let me tell you some ideas to make this better, and also some of its limitations that I haven't been able to solve until now...

Limitations:

As in most syntax highlighters, I cannot handle C-style comment blocks, and keywords like #region.

Ideas:

  • Implementing an XML serializer for the syntax highlighter and the intellisense to enable ease-of-use, and for a more comfortable language support.
  • Implementing some .NET-Reflection support for the intellisense to let it handle .NET based scripting easier.
  • Replacing the TreeView with a tinier container, but keeping the easy design-time edit function that TreeView has.

References

History

  • 2008.09.08 - Version 1.0.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Tamas Honfi


Member
I'm working as a software developer since 2005 mostly using C# and MS SQL Server for building windows and web applications. I have 3 years experience in developing CRM softwares, but I'm also interested in Game development using C++, DirectX, and C#-XNA.
I'm always open for new technologies, preferring code reusability, stability, and "nice solutions".
Occupation: Software Developer (Senior)
Company: Moonlight Studios
Location: Hungary Hungary

Other popular Edit Controls articles:

Article Top
You must Sign In to use this message board.
FAQ FAQ 
 
Noise Tolerance  Layout  Per page   
 Msgs 1 to 14 of 14 (Total in Forum: 14) (Refresh)FirstPrevNext
GeneralHelp [modified] Pinmemberleosco5:05 17 Dec '09  
Generalnot efficient Pinmemberhsj52805:13 2 Feb '09  
GeneralRemove pinove call to run under moni, imporve speed PinmemberAndrusM6:24 20 Oct '08  
GeneralRe: Remove pinove call to run under moni, imporve speed PinmemberThe_Mega_ZZTer17:05 23 Jun '09  
GeneralCannot open with Visual Studio 2005 express Pinmemberg.bude2:02 17 Sep '08  
GeneralOr Visual Studio 2005 Pro Pinmembereddiem918:10 14 Oct '08  
GeneralRe: Or Visual Studio 2005 Pro PinmemberTamas Honfi23:52 14 Oct '08  
GeneralFlashing on paste PinmemberAndrusM7:17 16 Sep '08  
GeneralRe: Flashing on paste PinmemberTamas Honfi1:32 17 Sep '08  
GeneralRe: Flashing on paste PinmemberAndrusM2:04 17 Sep '08  
GeneralRe: Flashing on paste PinmemberTamas Honfi2:20 17 Sep '08  
GeneralOther solutions PinmemberRednaxelaFX2:23 8 Sep '08  
GeneralRe: Other solutions Pinmemberdave.dolan10:14 8 Sep '08  
GeneralRe: Other solutions PinmemberAndrusM11:39 15 Sep '08  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads.

PermaLink | Privacy | Terms of Use
Last Updated: 8 Sep 2008
Editor: Smitha Vijayan
Copyright 2008 by Tamas Honfi
Everything else Copyright © CodeProject, 1999-2010
Web11 | Advertise on the Code Project