Change the NumbersColor at design time:
Run the application:
Workaround: move this code in the Form.Load event
RadSyntaxEditor allows the end-users to select a part of the text and drag the selection to a new position.
Currently, there is no public API that allows you to control whether the drag operation should start, on what target line you are dragging over (and whether you can drop on it) and when you drop the selection.
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; } } }
RadSyntaxEditorElement offers the following method: public CaretPosition GetPositionFromPoint(System.Drawing.Point point)
However, it doesn't return the correct CaretPosition as it requires to transform the System.Drawing.Point first:
private void MySyntaxEditor1_MouseDown(object sender, MouseEventArgs e)
{
CaretPosition pos = mySyntaxEditor1.SyntaxEditorElement.GetPositionFromPoint(GetPosition(e, mySyntaxEditor1.SyntaxEditorElement.EditorPresenter));
CaretPosition start = new CaretPosition(pos);
start.MoveToCurrentWordStart();
CaretPosition end = new CaretPosition(pos);
end.MoveToCurrentWordEnd();
mySyntaxEditor1.SyntaxEditorElement.Selection.Select(start, end);
}
public Telerik.WinControls.SyntaxEditor.UI.Point GetPosition(System.Windows.Forms.MouseEventArgs args, Telerik.WinControls.SyntaxEditor.UI.UIElement element)
{
System.Drawing.Point screenLocation = mySyntaxEditor1.SyntaxEditorElement.PointToScreen(args.Location);
System.Drawing.Point point = element.PointFromScreen(screenLocation);
Telerik.WinControls.Layouts.RadMatrix matrix = element.TotalTransform;
matrix.Invert();
return new System.Drawing.PointF(point.X * matrix.ScaleX, point.Y * matrix.ScaleY);
}
This is an odd one - see attached GIF.
If I attempt to select characters with the mouse (left-click + drag), at the beginning of any line of text, it won't highlight (90+% of the time). That's if I'm dragging from left-to-right.
If I select the same text from right-to-left, it works every time.
The component itself seems to work fine with DPI scaling except for the search/find functionality. When you search for some text and click to go to the first instance it finds, the actual text is off-screen, though it is highlighted correctly (when you scroll down you can see it highlighted).
This is easy to replicate by changing the Windows display scale to anything other than 100%.
using
System;
using
System.Windows.Forms;
using
Telerik.WinForms.Controls.SyntaxEditor.UI;
using
Telerik.WinForms.Controls.SyntaxEditor.UI.IntelliPrompt.Overloading;
namespace
WindowsFormsApp1
{
public
partial
class
Form1 : Form
{
public
Form1()
{
InitializeComponent();
OverloadInfoCollection overloadListA =
new
OverloadInfoCollection {
new
OverloadInfo(
"aaa"
,
"aaa description"
) };
this
.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems = overloadListA;
}
private
void
btnClear_Click(
object
sender, EventArgs e)
{
this
.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems.Clear();
}
private
void
btnChange_Click(
object
sender, EventArgs e)
{
OverloadInfoCollection overloadListB =
new
OverloadInfoCollection {
new
OverloadInfo(
"bbb"
,
"bbb description"
) };
OverloadListPopup overloadListWindow =
this
.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow;
overloadListWindow.Presenter.OverloadListItems = overloadListB;
overloadListWindow.Refresh();
}
private
void
radButton1_Click(
object
sender, EventArgs e)
{
OverloadInfoCollection overloadListC =
new
OverloadInfoCollection {
new
OverloadInfo(
"ccc"
,
"ccc description"
),
new
OverloadInfo(
"ccc 1"
,
"ccc 1 description"
) };
this
.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Presenter.OverloadListItems = overloadListC;
}
private
void
radSyntaxEditor1_DocumentContentChanged(
object
sender, Telerik.WinForms.SyntaxEditor.Core.Text.TextContentChangedEventArgs e)
{
this
.radSyntaxEditor1.SyntaxEditorElement.IntelliPrompts.OverloadListWindow.Show();
}
}
}
Hi Team , I want to make my syntax editor readonly and user should not be able to make any changes.
I have made my
((Telerik.WinControls.UI.RadSyntaxEditorElement)(this.radSyntaxEditor.GetChildAt(0))).IsReadOnly = true; .
But still the user is able to delete the data by pressing delete button .
How can we restrict this.
I also tried radSyntaxEditor.enabled=false. It disables editing but the are is greyed out.
Thanks
XmlFoldingTagger throws while entering XML. When closing the root tag on the next line, the Tagger throws once you enter the '/' (before.png -> after.png).
Adding a second opening tag and converting it to closing by inserting the '/' afterwards works.
When adding a child tag, the tagger offers to fold the unfinished tag against the root closing tag, and throws if you try to do so.
Please refer to the attached gif file.
Workaround: set bottom padding by setting the SyntaxEditorElement.HorizontalScrollBar.Padding property.
mySyntaxEditor1.SyntaxEditorElement.HorizontalScrollBar.Padding = new Padding(0, 0, 0, 2);
XMLFoldingTagger is not documented. Neither here: https://docs.telerik.com/devtools/winforms/controls/syntax-editor/features/taggers/overview nor here: https://docs.telerik.com/devtools/winforms/controls/syntax-editor/features/taggers/folding-taggers.
If my xml string contains an element with attributes, XMLFoldingTagger just ignores it!
For example:
<Formular DebugMode="F" Version="1" Typ="Rechnung">
<OtherElements/>
<Formular/>
is ignored. Element Formular is not recognized by the XMLFoldingTagger. Only simple elements are recognized, like:
<Formular>
<OtherElements/>
<Formular/>