Please refer to the attached gif file.
Workaround:
public Form1()
{
InitializeComponent();
this.radSpellChecker1.AutoSpellCheckControl = this.radTextBoxControl1;
this.radTextBoxControl1.Multiline = true;
this.radTextBoxControl1.ContextMenuOpening += radTextBoxControl1_ContextMenuOpening;
}
public static bool containsError = false;
public static bool isMisspelledWord = true;
private void radTextBoxControl1_ContextMenuOpening(object sender, TreeBoxContextMenuOpeningEventArgs e)
{
if (!isMisspelledWord && containsError)
{
//do not show the context when you click over a correct word
e.Cancel = true;
}
}
public class MyTextBox : RadTextBoxControl
{
protected override RadTextBoxControlElement CreateTextBoxElement()
{
return new MyTextBoxElement();
}
public override string ThemeClassName
{
get
{
return typeof(RadTextBoxControl).FullName;
}
}
}
public class MyTextBoxElement : RadTextBoxControlElement
{
RadSpellChecker sp = new RadSpellChecker();
protected override void OnMouseDown(MouseEventArgs e)
{
sp.AutoSpellCheckControl = this.ElementTree.Control;
containsError = false;
isMisspelledWord = true;
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
Point location = this.ElementTree.Control.PointToClient(Cursor.Position);
TextPosition position = this.Navigator.GetPositionFromPoint(location);
this.Navigator.CaretPosition = position;
if (this.Multiline)
{
this.Navigator.ScrollToCaret();
}
ITextBoxNavigator navigator = this.Navigator;
TextPosition caretPosition = navigator.CaretPosition;
LineInfo line = caretPosition.Line;
ITextBlock textBlock = caretPosition.TextBlock;
string clickedWordInRadTextBox = textBlock.Text;
if (string.IsNullOrEmpty(clickedWordInRadTextBox) || clickedWordInRadTextBox == " ")
{
return;
}
TextBoxSpellChecker tbSpellChecker = sp.GetControlSpellChecker(typeof(RadTextBoxControl)) as TextBoxSpellChecker;
ICollection<string> suggestions = tbSpellChecker.SpellChecker.GetSuggestions(clickedWordInRadTextBox);
if (suggestions.Count > 0)
{
containsError = true;
}
if (tbSpellChecker.SpellChecker.CheckWordIsCorrect(clickedWordInRadTextBox))
{
isMisspelledWord = false;
}
base.OnMouseDown(e);
}
}
protected override Type ThemeEffectiveType
{
get
{
return typeof(RadTextBoxControlElement);
}
}
}