Completed
Last Updated: 05 May 2021 12:57 by ADMIN
Release R2 2021
Created by: n/a
Comments: 4
Category: UI for WinForms
Type: Feature Request
13
Add Office 2016 theme to the WinForms suite.
Completed
Last Updated: 11 May 2021 11:13 by ADMIN
Release R2 2021
Created by: atfats
Comments: 3
Category: UI for WinForms
Type: Feature Request
9

hi...

A Callout Control is in your roadmap for winforms please ?

thx in advance...

 

regards,

Completed
Last Updated: 14 Sep 2021 07:41 by ADMIN
Release R3 2021
Created by: CHEE HANG
Comments: 0
Category: UI for WinForms
Type: Feature Request
8
Add grouping to the navigation view like attached
Completed
Last Updated: 17 Sep 2014 15:04 by ADMIN
ADMIN
Created by: Nikolay
Comments: 0
Category: UI for WinForms
Type: Feature Request
6
Users should be able to use the scrollbars of the container controls at design-time.
Completed
Last Updated: 18 Jan 2013 10:57 by Jesse Dyck
ADMIN
Created by: Ivan Petrov
Comments: 6
Category: UI for WinForms
Type: Feature Request
5
Add the ability to add custom items to the RadPropertyGrid items collection.
Completed
Last Updated: 11 Oct 2023 10:09 by ADMIN
Release R3 2023
Created by: Stoyan
Comments: 4
Category: UI for WinForms
Type: Feature Request
4
A control that can be used to display an icon in the Windows taskbar notification area.
Completed
Last Updated: 11 Feb 2014 11:18 by ADMIN
IMPROVE. RadShortcut - having displayed two forms both using the same shortcut for some action, the shortcut is applied to the first opened form instead to the one on focus.
Completed
Last Updated: 19 Feb 2019 15:58 by ADMIN
Created by: Frank
Comments: 2
Category: UI for WinForms
Type: Feature Request
3
I need to tab though the form fields in RadPdfViewer instead of having to click in each one
Completed
Last Updated: 12 Aug 2011 07:22 by Svetlin
Alow reordering and drag-and-drop of column's group in ColumnGroupsViewDefinition.
Completed
Last Updated: 25 Jul 2018 06:53 by ADMIN
Completed
Last Updated: 01 Sep 2020 14:53 by ADMIN
Release R3 2020
Please refer to the attached gif file. The activated editor for the text field shouldn't change the font. 
Completed
Last Updated: 13 Mar 2024 08:49 by ADMIN
Release 2024.1.312

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. 

Completed
Last Updated: 30 May 2016 13:53 by ADMIN
One should be able to export to a stream instead to a file as well.
Completed
Last Updated: 25 Apr 2017 11:21 by ADMIN
Completed
Last Updated: 31 Jan 2024 11:39 by ADMIN
Release 2024 Q1 (2024.1.130)
Created by: Martin
Comments: 13
Category: UI for WinForms
Type: Feature Request
1

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:
  • If delimiters are one character, why not use String.Split?
  • Why use a LinkedList?
Completed
Last Updated: 05 Apr 2023 10:02 by ADMIN
Release R1 2023 SP1

This is about this method:

        public void SetError(GridViewCellCancelEventArgs e, Exception exception)
        {
            GridViewDataErrorEventArgs args = new GridViewDataErrorEventArgs(exception, 0, 0, GridViewDataErrorContexts.Commit);
            if (e != null)
            {
                args = new GridViewDataErrorEventArgs(exception, e.ColumnIndex, e.RowIndex, GridViewDataErrorContexts.Commit);
            }
            this.EventDispatcher.RaiseEvent<GridViewDataErrorEventArgs>(EventDispatcher.DataError, this, args);

            if (args.ThrowException)
            {
                throw args.Exception;
            }

            if (args.Cancel)
            {
                //TODO: cancel row edit 
            }
        }

The method GridViewTemplate.SetError accepts a parameter of type GridViewCellCancelEventArgs (named e), but uses the information to create a new object of type GridViewDataErrorEventArgs (named args) and uses information from e to fill args.

The method then fires an event with args. Args also has a property Cancel which can be set in the event handlers. But nothing is done with that property.

Parameter e also has a property Cancel which is never be filled. So it could be useful, at the end of SetError, to set e.Cancel with args.Cancel. This way the caller can use the Cancel information from the events.

This request is also related to my next request. 

PS: Why is GridViewCellCancelEventArgs  called this way? It implies it has arguments for an event, but it is not used for an event, am I right?

Completed
Last Updated: 05 Feb 2019 15:11 by ADMIN

Until released the text can be cleared this way:

GridSearchCellElement searchCell = this.radGridView1.TableElement.FindDescendant<GridSearchCellElement>();
if (searchCell != null)
{
    searchCell.SearchTextBox.Text = "";
}

Completed
Last Updated: 19 Feb 2019 14:07 by ADMIN
This will handle the scenario of having different image sets for different DPI.
Completed
Last Updated: 15 Feb 2019 16:46 by ADMIN

AutoCompleteSuggestHelper, Assembly: Telerik.WinControls.UI, Version=2019.1.117.40

 

Isnt the hilighted line (contains branch) very unoptimized.

https://rhale78.wordpress.com/2011/05/16/string-equality-and-performance-in-c/

Multiple ToLower string operation. Why not let the framework do the operation since you are always using ordinal?

optimized version: return item.Text.Contains(this.Filter, StringComparison.OrdinalIgnoreCase);


 

protected virtual bool DefaultFilter(RadListDataItem item)
    {
      switch (this.suggestMode)
      {
        case SuggestMode.StartWiths:
          return item.Text.StartsWith(this.Filter, this.StringComparison);
        case SuggestMode.Contains:
          if ((this.StringComparison & StringComparison.InvariantCultureIgnoreCase) == StringComparison.InvariantCultureIgnoreCase || (this.StringComparison & StringComparison.InvariantCultureIgnoreCase) == StringComparison.CurrentCultureIgnoreCase)
            return item.Text.ToLower().Contains(this.Filter.ToLower());
          return item.Text.Contains(this.Filter);
        default:
          return item.Text.StartsWith(this.Filter, this.StringComparison);
      }
    }

 

Completed
Last Updated: 04 Apr 2019 13:29 by Dimitar
Release R2 2019 (LIB 2019.1.408)
The issue can be reproduced by setting the AssociatedControl property in the designer and later at run-time.
1 2 3