We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.

How can I programmatically perform syntax highlighting in the EditControl ?

 

It is possible to create configuration settings programmatically using ISnippetFormat and ConfigLexem class. Please refer to the attached sample and the code snippets below that illustrates this.

C#

public Form1()

{

 InitializeComponent();

 IConfigLanguage language = this.editControl1.Configurator.CreateLanguageConfiguration("New");

 Split s1 = new Split("/*");

Split s2 = new Split("*/");

 language.Splits.Add(s1);

language.Splits.Add(s2);

 this.editControl1.ApplyConfiguration(language);

 ISnippetFormat keyword = this.editControl1.Language.Add("Keyword");

keyword.Font = new Font("Arial", 10, FontStyle.Regular);

keyword.FontColor = Color.Blue;

 ISnippetFormat comment = this.editControl1.Language.Add("Comment");

comment.Font = new Font("Arial", 10, FontStyle.Regular);

comment.FontColor = Color.Green;

 ISnippetFormat text = this.editControl1.Language.Add("Text");

text.FontColor = Color.Brown;

text.Font = new Font("Arial", 10);

 ConfigLexem keywordlexem1 = new ConfigLexem("private", "", FormatType.Custom, false);

keywordlexem1.FormatName = "Keyword";

this.editControl1.Language.Lexems.Add(keywordlexem1);

 ConfigLexem keywordlexem2 = new ConfigLexem("int", "", FormatType.Custom, false);

keywordlexem2.FormatName = "Keyword";

this.editControl1.Language.Lexems.Add(keywordlexem2);

 ConfigLexem configLex = new ConfigLexem("this", "", FormatType.Custom, false);

configLex.FormatName = "Keyword";

this.editControl1.Language.Lexems.Add(configLex);

 ConfigLexem commentlexem = new ConfigLexem("/*","*/", FormatType.Custom,true);

commentlexem.FormatName = "Comment";

commentlexem.OnlyLocalSublexems = true;

      ConfigLexem configLex1 = new ConfigLexem("[a-z|A-Z]*", "", FormatType.Custom, false);

configLex1.IsBeginRegex = true;

configLex1.FormatName = "Text";

this.editControl1.Language.Lexems.Add(commentlexem);

 this.editControl1.Language.ResetCaches();

 this.editControl1.Text = "this is the first line\nthis is the second line\nthis is the third line\n\n/* Sample */\n\nprivate int";

 }

VB

 Public Sub New()

 ' This call is required by the Windows Form Designer.

InitializeComponent()

Dim language As IConfigLanguage = Me.EditControl1.Configurator.CreateLanguageConfiguration("New")

 Dim s1 As Split = New Split("/*")

Dim s2 As Split = New Split("*/")

 language.Splits.Add(s1)

language.Splits.Add(s2)

 Me.EditControl1.ApplyConfiguration(language)

 Dim keyword As ISnippetFormat = Me.EditControl1.Language.Add("Keyword")

keyword.Font = New Font("Arial", 10, FontStyle.Regular)

keyword.FontColor = Color.Blue

 Dim comment As ISnippetFormat = Me.EditControl1.Language.Add("Comment")

comment.Font = New Font("Arial", 10, FontStyle.Regular)

comment.FontColor = Color.Green

 Dim text As ISnippetFormat = Me.EditControl1.Language.Add("Text")

text.FontColor = Color.Brown

text.Font = New Font("Arial", 10)

 Dim keywordlexem1 As ConfigLexem = New ConfigLexem("private", "", FormatType.Custom, False)

keywordlexem1.FormatName = "Keyword"

Me.EditControl1.Language.Lexems.Add(keywordlexem1)

 Dim keywordlexem2 As ConfigLexem = New ConfigLexem("int", "", FormatType.Custom, False)

keywordlexem2.FormatName = "Keyword"

Me.EditControl1.Language.Lexems.Add(keywordlexem2)

 Dim configLex As ConfigLexem = New ConfigLexem("this", "", FormatType.Custom, False)

configLex.FormatName = "Keyword"

Me.EditControl1.Language.Lexems.Add(configLex)

 Dim commentlexem As ConfigLexem = New ConfigLexem("/*", "*/", FormatType.Custom, True)

commentlexem.FormatName = "Comment"

commentlexem.OnlyLocalSublexems = True

 Dim configLex1 As ConfigLexem = New ConfigLexem("[a-z|A-Z]*", "", FormatType.Custom, False)

configLex1.IsBeginRegex = True

configLex1.FormatName = "Text"

 Me.EditControl1.Language.Lexems.Add(commentlexem)

 Me.EditControl1.Language.ResetCaches()

 Me.EditControl1.Text = "this is the first line" & Constants.vbLf & "this is the second line" & Constants.vbLf & "this is the third line" & Constants.vbLf + Constants.vbLf & "/* Sample */" & Constants.vbLf + Constants.vbLf & "private int"

 ' Add any initialization after the InitializeComponent() call.

 End Sub

End Class

Article ID: Published Date: Last Revised Date: Platform: Control:
307 04/30/2011 07/10/2014 Windows Forms EditControl
Tags:
Did you find this information helpful?
Add Comment
You must log in to leave a comment

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.