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; } } }