Click here to Skip to main content
11,813,974 members (41,386 online)
Click here to Skip to main content

CodeTextBox - another RichTextBox control with syntax highlightning and intellisense

, 8 Sep 2008 CPOL 87.2K 5.2K 142
Rate this:
Please Sign up or sign in to vote.
A RichTextBox control with syntax highlightning and intellisense.


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. Smile | :) 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. Smile | :)

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... Smile | :) 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...


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


  • 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.



  • 2008.09.08 - Version 1.0.


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


About the Author

Tamas Honfi
Software Developer (Senior) Moonlight Studios
Hungary Hungary
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".

You may also be interested in...

Comments and Discussions

QuestionDoen't work! Error: Resource not available! Pin
C4RL.026-Sep-13 22:59
memberC4RL.026-Sep-13 22:59 
AnswerRe: Doen't work! Error: Resource not available! Pin
Wrangly15-Oct-13 2:01
memberWrangly15-Oct-13 2:01 
AnswerRe: Doen't work! Error: Resource not available! Pin
Member 93225358-Dec-13 13:43
memberMember 93225358-Dec-13 13:43 
Questionhow I can use intellisense separately Pin
luislasonbra6-Apr-13 9:18
memberluislasonbra6-Apr-13 9:18 
GeneralMy vote of 5 Pin
Greg_han21-Jan-13 18:07
memberGreg_han21-Jan-13 18:07 
GeneralVery Good Work Pin
Dnyaneshwar Kotwal19-Aug-12 20:00
memberDnyaneshwar Kotwal19-Aug-12 20:00 
QuestionSuggestions Pin
Member 858171531-Jan-12 15:37
memberMember 858171531-Jan-12 15:37 
AnswerSuper Pin
Member 85241598-Jan-12 8:18
memberMember 85241598-Jan-12 8:18 
Questiongood attempt Pin
leosco18-Nov-11 5:20
memberleosco18-Nov-11 5:20 
GeneralNot adding the textbox to the toolbox Pin
501st_commander17-Nov-10 12:08
member501st_commander17-Nov-10 12:08 
GeneralRe: Not adding the textbox to the toolbox Pin
Member 858171531-Jan-12 15:38
memberMember 858171531-Jan-12 15:38 
GeneralMy vote of 5 Pin
Amir Mehrabi-Jorshary1-Nov-10 22:16
memberAmir Mehrabi-Jorshary1-Nov-10 22:16 
GeneralGood work, some critique Pin
Bigdeak10-Jun-10 0:12
memberBigdeak10-Jun-10 0:12 
GeneralGreat job. Pin
etsimber2-Jun-10 3:15
memberetsimber2-Jun-10 3:15 
GeneralConverting to silvellight Pin
AndrusM19-Apr-10 4:53
memberAndrusM19-Apr-10 4:53 
GeneralWell Done! Pin
Christo66719-Apr-10 4:35
memberChristo66719-Apr-10 4:35 
GeneralHelp [modified] Pin
leosco17-Dec-09 4:05
memberleosco17-Dec-09 4:05 
Generalnot efficient Pin
hsj52802-Feb-09 4:13
memberhsj52802-Feb-09 4:13 
GeneralRe: not efficient Pin
Christo66719-Apr-10 4:39
memberChristo66719-Apr-10 4:39 
GeneralRemove pinove call to run under moni, imporve speed Pin
AndrusM20-Oct-08 5:24
memberAndrusM20-Oct-08 5:24 
GeneralRe: Remove pinove call to run under moni, imporve speed Pin
The_Mega_ZZTer23-Jun-09 16:05
memberThe_Mega_ZZTer23-Jun-09 16:05 
GeneralRe: Remove pinove call to run under moni, imporve speed Pin
Christo66719-Apr-10 4:46
memberChristo66719-Apr-10 4:46 
GeneralCannot open with Visual Studio 2005 express Pin
g.bude17-Sep-08 1:02
memberg.bude17-Sep-08 1:02 
GeneralOr Visual Studio 2005 Pro Pin
eddiem914-Oct-08 17:10
membereddiem914-Oct-08 17:10 
GeneralRe: Or Visual Studio 2005 Pro Pin
Tamas Honfi14-Oct-08 22:52
memberTamas Honfi14-Oct-08 22:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

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

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.151002.1 | Last Updated 8 Sep 2008
Article Copyright 2008 by Tamas Honfi
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid