I'm trying to use the new RadSyntaxEditor in a popup editor and I'm having issues and questions. I'm using it in a component built in code that is used to edit a SQL Query from a grid cell double click. It seems to work except when I press enter to insert a new line it does not do that, instead the default form button is fired to close the form. Note that I can launch the form to either show a multi-line textbox or a RadSyntaxEditor depending on the input parameters. It works perfectly with the textbox. The issue is with the RadSyntaxEditor
I also have the following questions:
I cannot find any documentation on loading text into the RadSyntaxEditor is my code correct for this?
I cannot find any documentation regarding the Document property - where do I find that?
I cannot find anything on how to get the text out of the RadSyntaxEditor when I'm done. Is my code correct on this?
Here are my code snippets:
private void GvMrgLtr_CellDoubleClick(object sender, EventArgs e)
{
var m = MethodBase.GetCurrentMethod();
try
{
if (sender is HostedTextBoxBase sndr)
sndr.Text = MemoDialog.ShowDialog(sndr.Text, "Edit", 0, false, false, true);
}
catch (Exception ex)
{
MessageBox.Show($@"{m.Name} : {ex}");
Log.Error(ex, m.Name);
}
}
using System.Windows.Forms;
using Telerik.WinControls.UI;
using Telerik.WinForms.Controls.SyntaxEditor.Taggers;
using Telerik.WinForms.SyntaxEditor.Core.Text;
namespace P3CMS.Components
{
internal static class MemoDialog
{
public static string ShowDialog(string text, string caption, int maxLength = 0,
bool ro = false, bool spellcheck = true, bool sqlSyntaxHighlight = false)
{
var originalText = text;
var memoDialogForm = new RadForm
{
Width = 500,
Height = 700,
FormBorderStyle = FormBorderStyle.Sizable,
Text = caption,
StartPosition = FormStartPosition.CenterScreen
};
var textBox = new RadTextBox
{
Left = 50,
Top = 40,
Width = 400,
Dock = DockStyle.Fill,
Multiline = true,
AcceptsReturn = true,
Text = text,
ScrollBars = ScrollBars.Both,
MaxLength = maxLength,
ReadOnly = ro
};
var textDocument = new TextDocument(text);
var radSyntaxEditor = new RadSyntaxEditor
{
Left = 50,
Top = 40,
Width = 400,
Dock = DockStyle.Fill,
Document = textDocument
};
var tagger = new SqlTagger(radSyntaxEditor.SyntaxEditorElement);
radSyntaxEditor.TaggersRegistry.RegisterTagger(tagger);
var checker = new RadSpellChecker { AutoSpellCheckControl = textBox };
if (!spellcheck)
checker.AutoSpellCheckControl = null;
var bottomPanel = new RadPanel { Height = 60, Dock = DockStyle.Bottom };
var confirmation = new RadButton
{ Text = @"Ok", Left = 50, Width = 100, Top = 8, DialogResult = DialogResult.OK };
var cancel = new RadButton
{ Text = @"Cancel", Left = 200, Width = 100, Top = 8, DialogResult = DialogResult.Cancel };
confirmation.Click += (sender, e) => { memoDialogForm.Close(); };
if (sqlSyntaxHighlight)
memoDialogForm.Controls.Add(radSyntaxEditor);
else
memoDialogForm.Controls.Add(textBox);
memoDialogForm.Controls.Add(bottomPanel);
bottomPanel.Controls.Add(confirmation);
bottomPanel.Controls.Add(cancel);
memoDialogForm.AcceptButton = confirmation;
memoDialogForm.CancelButton = cancel;
if (!sqlSyntaxHighlight)
textBox.Select(0, 0);
return memoDialogForm.ShowDialog() == DialogResult.OK
? sqlSyntaxHighlight ? textDocument.CurrentSnapshot.GetText() : textBox.Text
: originalText;
}
}
}