Repro steps:
System.NullReferenceException: Object reference not set to an instance of an object. at Telerik.WinControls.UI.RadDateTimePickerCalendar.popupControl_Closing(Object sender, RadPopupClosingEventArgs args)Expected behavior:
- The dropdown closes after moving to another cell.
- No exception occurs.
To reproduce:
this.radCheckBox1.Text = "Something (in brackets)";
this.radCheckBox1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
Add a RadTextBox on the form and open its smart tag:
Open the editor for the font and select the entire text:
Then, press Del:
When you try to close the editor, an error occurs:
However, the Font is already serialized as null:
As a result, the designer can't be opened any more:
Presently none of the controls can be navigated to using the TAB key or the shift TAB combination.
For example, in this picture I would like to be able to go from the Verdana font to the size 12 font using TAB key controls. I would like to be able to do this for all controls within the editor. I have asked support and presently this wouldn't be possible.
To be accessible and compliant with our organizations standards, the search bar that can be enabled in the gridview should be accessible by pressing TAB and shift TAB. Right now the only way to select the search by keyboard is pressing Control F, but the up/down arrows and the search settings cog wheel cannot be accessed via the keyboard.
As of right now, the user cannot also select the column headers using the keyboard, which in turn means you cannot sort by a column with a keyboard.
Background: With many people having moved to working remotely, collaboration is a much larger part of any enterprise applications. As such, it would be highly beneficial to add real time collaboration capabilities to editor controls, more specifically the RadRichTextEditor control. It would work similarly to how MS Word works when more than one user is editing a document at the same time.
Scenario: Assume you have and WinForms application where there is a form that contains a RadRichTextEditor. The content for this control is populated from a centralized database. This content is editable by users of the application. Lets say that you have two users (User A and User B) editing this content at the same time. Currently, User A cannot see what User B is doing in real-time, and vice-versa. Each time one of the users saves the content, it will overwrite any changes made by the other user.
Desired outcome: If the users in the above scenario are using MS Word, each user would see that someone else is currently editing the document and the other user's changes would be displayed in real-time. This same outcome should be made more readily available with the Telerik editors, primarily the RadRichTextEditor, so that when two users are editing the same content, they would see each others' changes in real-time.
I know this is possible using SignalR and a bit of code, but I think it would be beneficial for the RadRichTextEditor to have better "out of the box" support for this feature.
I am aware of a web-based control that has this feature. Specifically, the CKEditor (https://ckeditor.com/) control has the features I am requesting. However, I am looking at WinForms as opposed to web.
RadVirtualGrid is created to support a million records or more. Still it contains some "heavy" operations like CopySelection/CutSelection/Paste which can take a long time.
I would like to intercept these methods so I can show a "Please wait"-window during the operation. Furthermore I have the need to set a flag to true when such a operation is executing.
The Cut operations of the RadVirtualGrid does not work.
When the SelectionMode is set to FullRowSelect, MultiSelect = true, and multiple rows are selected, the loop goes something like this:
// Pseudo code:
for(int rowIndex = firstRow; rowIndex <= lastRow; rowIndex++)
{
AddRowToClipboardData(rowIndex)
UserDeletedRow(rowIndex);
}
My suggestion:
The assembly is required for our RadMarkupEditor using the IE rendering engine. It allows you to specify HTML-like text formatting at design time in the Properties window of Visual studio:
We work with a RadGridView with 145000 rows and 4 columns. We use copy-paste to move data around from other apps and the application with build with Telerik.
When we copy a flat file (with tabs delimited fields) and we paste it to the RadGridView, the whole process is painfully slow. The function to retrieve the data from the clipboard takes minutes (maybe hours, I cancelled it). It tracked the cause down to the StringTokenizer class. The tokenizer splits the string up into separate fields. But after extracting a field it creates a new copy of that string (containing about 10MB of data) minus the field. I patched it (with HarmonyX) and now it takes only one second:
static class StringTokenizerPerformancePatch
{
static private readonly InstanceFieldAccessor<StringTokenizer, LinkedList<string>> _tokens = new InstanceFieldAccessor< StringTokenizer, LinkedList<string>>("tokens");
static private readonly InstanceFieldAccessor<StringTokenizer, string> _sourceString = new InstanceFieldAccessor<StringTokenizer, string>("sourceString");
static private readonly InstanceFieldAccessor< StringTokenizer, string> _delimiter = new InstanceFieldAccessor<StringTokenizer, string>("delimiter");
static private readonly InstanceFieldAccessor< StringTokenizer, IEnumerator<string>> _enumerator = new InstanceFieldAccessor<StringTokenizer, IEnumerator<string>>("enumerator");
[HarmonyPatch(typeof(StringTokenizer), "Tokenize")]
staticclassPatch_StringTokenizer_Tokenize
{
static bool Prefix(StringTokenizer __instance)
{
var tokens = _tokens.GetValue(__instance);
var sourceString = _sourceString.GetValue(__instance);
var delimiter = _delimiter.GetValue(__instance);
Tokenize(tokens, sourceString, delimiter);
_enumerator.SetValue(__instance, tokens.GetEnumerator());
returnfalse;
}
static private void Tokenize(LinkedList<string> tokens, string text, string delimiter)
{
tokens.Clear();
if (string.IsNullOrEmpty(text))
return;
int index = 0;
while(true)
{
var index2 = text.IndexOf(delimiter, index, StringComparison.Ordinal);
if (index2 < 0)
{
tokens.AddLast(text.Substring(index));
break;
}
string token = text.Substring(index, index2 - index);
tokens.AddLast(token);
index = index2 + delimiter.Length;
}
}
}
}
Please update your tokanizer to increase performance. While you are at it:I can't provide a project or even code snippets that would make sense out of context because the code base is too complex for an easy replication to be setup.
We are trying various things like calling Refresh, Update.
Hoping this is something you've encountered before and have some suggestions.
1. Select the ColorBox's ellipses to open the Color Dialog
2. Select the Web tab
3. Select Any colour in this Page
4. Select Transparent
Colour will update
5. Select the Professional tab
6. Select any colour
Colour won't update
7. Select any colour
Colour won't update
8. Select OK on Dialog
Colour will be transparent
Values will be same as selected in step 7