Category / Section
How to accomplish multiple levels of context choice list implementation in the WinForms SyntaxEditor (EditControl)?
1 min read
Multiple levels of context choice
Multiple levels of context choice list can be implemented by handling the ContextChoiceBeforeOpen and ContextChoiceOpen event.
C#
private void editControl1_ContextChoiceBeforeOpen(object sender, System.ComponentModel.CancelEventArgs e)
{
ILexem lex;
lex = this.editControl1.ContextChoiceController.LexemBeforeDropper as ILexem;
if ((lex.Text == "this") || (lex.Text == "me"))
firstLevel = true;
else if (ContextChoiceListPresenceCheck(contextChoiceListLevelOne, lex.Text) == true)
secondLevel = true;
else
e.Cancel = true;
}
private void editControl1_ContextChoiceOpen(Syncfusion.Windows.Forms.Edit.Interfaces.IContextChoiceController controller)
{
if (firstLevel == true)
{
controller.Items.Clear();
for (int i=0; i<contextChoiceListLevelOne.Length; i++)
{
controller.Items.Add(contextChoiceListLevelOne[i], "This is a" + contextChoiceListLevelOne[i], this.editControl1.ContextChoiceController.Images[i]);
}
}
else if (secondLevel == true)
{
controller.Items.Clear();
for (int i=0; i<contextChoiceListLevelOne.Length; i++)
{
controller.Items.Add(contextChoiceListLevelTwo[i], "This is a" + contextChoiceListLevelTwo[i], this.editControl1.ContextChoiceController.Images[i]);
}
}
firstLevel = false;
secondLevel = false;
}
VB
Private Sub editControl1_ContextChoiceBeforeOpen(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles editControl1.ContextChoiceBeforeOpen Dim lex As ILexem lex = CType(IIf(TypeOf Me.editControl1.ContextChoiceController.LexemBeforeDropper Is ILexem, Me.editControl1.ContextChoiceController.LexemBeforeDropper, Nothing), ILexem) If (lex.Text = "this") OrElse (lex.Text = "me") Then firstLevel = True Else If ContextChoiceListPresenceCheck(contextChoiceListLevelOne, lex.Text) = True Then secondLevel = True Else e.Cancel = True End If End Sub Private Sub editControl1_ContextChoiceOpen(ByVal controller As Syncfusion.Windows.Forms.Edit.Interfaces.IContextChoiceController) Handles editControl1.ContextChoiceOpen If firstLevel = True Then controller.Items.Clear() Dim i As Integer=0 Do While i < contextChoiceListLevelOne.Length controller.Items.Add(contextChoiceListLevelOne(i), "This is a" & contextChoiceListLevelOne(i), Me.editControl1.ContextChoiceController.Images(i)) i += 1 Loop ElseIf secondLevel = True Then controller.Items.Clear() Dim i As Integer=0 Do While i < contextChoiceListLevelOne.Length controller.Items.Add(contextChoiceListLevelTwo(i), "This is a" & contextChoiceListLevelTwo(i), Me.editControl1.ContextChoiceController.Images(i)) i += 1 Loop End If firstLevel = False secondLevel = False End Sub
Reference link: https://help.syncfusion.com/windowsforms/syntax-editor/intellisense#populate-intellisense-pop-up