Completed
Last Updated: 13 Apr 2023 08:25 by ADMIN
Release R2 2023 (LIB 2023.1.413)
Create a brand new .NET 7 project with a RadForm using the following code: 
    public partial class RadForm1 : Telerik.WinControls.UI.RadForm
    {
        public RadForm1()
        {
            InitializeComponent();
            this.SizeChanged += RadForm1_SizeChanged;
            this.timer1.Start();
        }

        private void RadForm1_SizeChanged(object sender, EventArgs e)
        {
            this.Text = this.Size.ToString();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.WindowState = FormWindowState.Normal;
            }
            else
            {
                this.WindowState = FormWindowState.Minimized;
            }
        }
    }
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: 27 Mar 2023 06:39 by ADMIN
Release R1 2023 SP1

Hi,

I am using CalHelper to convert recurrence rule to and from string.

It looks like when I convert rule to string and then parse it back to recurrence, some of the properties get dropped.

Please see below from my VS editor highlighting this:

 

Am I doing something wrong, or is this a bug?

 

Thanks

Anu

Completed
Last Updated: 27 Mar 2023 06:39 by ADMIN
Release R1 2023 SP1
The issue can be observed in OpenEdge projects using Telerik UI for WinForms throwing the following error: Assert - Error Trying to update row outside a transaction (15599).
Completed
Last Updated: 27 Mar 2023 06:39 by ADMIN
Release R1 2023 SP1
When exporting with ExportToCSV, the generated text file contains a blank row after the last data row.
Completed
Last Updated: 27 Mar 2023 06:39 by ADMIN
Release R1 2023 SP1
Created by: Martin
Comments: 5
Category: UI for WinForms
Type: Bug Report
1

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);
}
What is wrong here?
  1. Lets say 10 rows are selected, only the even rows get copied. First row 0 is copied and deleted. When row 0 is deleted, all rows move a position down. So when copying row 1, it is actually row 2 that is copyied.
  2. When cutting all rows, in my case an exception is thrown, because a rowIndex larger than the number of rows is referred to.
  3. When cutting to multiple clipboard formats, the second format will not contain the original selected data, because it has already been deleted.

My suggestion:

  1. First copy all the data and formats to the clipboard.
  2. Then delete the selected rows.

 

Completed
Last Updated: 24 Feb 2023 10:20 by ADMIN
Release R1 2023

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:

 

Completed
Last Updated: 02 Feb 2023 09:38 by ADMIN
Release R1 2023
Completed
Last Updated: 02 Feb 2023 09:36 by ADMIN
Release R1 2023

To reproduce the issue, just drag a RadToggleSwitch to the form. Then, at run time call the method:

radToggleSwitch1.SetToggleState(newValue: false, animate: false);

You will notice that the colors are changed but the thumb is not moved: 

Workaround:

            this.radToggleSwitch1.AllowAnimation = false;
            this.radToggleSwitch1.Toggle();

Completed
Last Updated: 02 Feb 2023 09:34 by ADMIN
Release R1 2023
Created by: Wenyu
Comments: 1
Category: UI for WinForms
Type: Bug Report
0

After installing R3 2022, the QuickStart example can't be run:

 

 
Completed
Last Updated: 01 Nov 2022 13:52 by ADMIN
Release R3 2022 SP2
Created by: Desislava
Comments: 0
Category: UI for WinForms
Type: Feature Request
0

The ChartLegendElement displays the legend items in a StackLayoutElement which can be either vertical or horizontal.

        public RadForm1()
        {
            InitializeComponent();

            Random rand = new Random();
            List<LineSeries> list = new List<LineSeries>();
            for (var index = 1; index <= 15; index++)
            {
                LineSeries ls = new LineSeries();
                ls.LegendTitle = "Series " + index;
                list.Add(ls);
            }

            for (int index = 1; index <= 100; index++)
            {
                foreach (LineSeries s in list)
                    s.DataPoints.Add(new CategoricalDataPoint(index, rand.Next(0, rand.Next(5, 20))));
            }
            this.radChartView1.Series.AddRange(list.ToArray());
            this.radChartView1.ShowLegend = true;
            this.radChartView1.ChartElement.LegendPosition = LegendPosition.Bottom;
            this.radChartView1.ChartElement.LegendElement.StackElement.Orientation = Orientation.Vertical;
        }

Horizontal:

Vertical:

It would be good to provide an option for wrapping the legend items:

chartview-wrap-legend-items002

Workaround: use an appropriate container for the legend items to wrap the legend item and use the space more efficiently

https://docs.telerik.com/devtools/winforms/knowledge-base/chartview-wrap-legend-items 

 

Completed
Last Updated: 01 Nov 2022 13:07 by ADMIN
Release R3 2022 SP2

The method GridViewTemplate.SetError creates in most situations an GridViewDataErrorEventArgs object twice.

Current code:

GridViewDataErrorEventArgs args = new GridViewDataErrorEventArgs(exception, 0, 0, GridViewDataErrorContexts.Commit);
if (e != null)
{
    args = new GridViewDataErrorEventArgs(exception, e.ColumnIndex, e.RowIndex, GridViewDataErrorContexts.Commit);
}

In assume in most cases e will not be null, so in must cases the first args will be removed. This has a small negative impact on memory and performace.

Suggestion:

GridViewDataErrorEventArgs args = e == null 
    ? new GridViewDataErrorEventArgs(exception, 0, 0, GridViewDataErrorContexts.Commit)
    : new GridViewDataErrorEventArgs(exception, e.ColumnIndex, e.RowIndex, GridViewDataErrorContexts.Commit);

Completed
Last Updated: 01 Nov 2022 13:06 by ADMIN
Release R3 2022 SP2
Created by: Martin
Comments: 1
Category: UI for WinForms
Type: Feature Request
0

This is about the following 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 
            }
        }

Right now, the method GridViewTemplate.SetError accepts a parameter of type GridViewCellCancelEventArgs, which in itself is weird, because event args should only be used inside events and OnXXX-methods. But since SetError fires an event, one could argue that this method is like a OnXXX-method.

But inside it becomes more weird, it translates GridViewCellCancelEventArgs into GridViewDataErrorEventArgs. And I must admit, the last DataError-args feel a lot more logical that CellCancel-args when firing setting an error. Furthermore, if I create an override of class GridViewCellCancelEventArgs to contain more data about an error, this information never reaches the event handlers.

So why this translation? Or better: Why this parameter?

My suggestion would be to make a new overload:


public void SetError(GridViewDataErrorEventArgs e)
{
    if (e == null)
        throw new ArgumentNullException(nameof(e));

        this.EventDispatcher.RaiseEvent<GridViewDataErrorEventArgs>(EventDispatcher.DataError, this, args);

        if (args.ThrowException)
                throw args.Exception;

        if (args.Cancel)
        {
                // TODO: I really do not know what telerik wanted to do here, so I live this up to Telerik.
        }
}
Furthermore you could consider markering the other SetError-methods as obsolete.
Completed
Last Updated: 12 Oct 2022 12:36 by ADMIN
Release R3 2022 SP2
Created by: Martin
Comments: 7
Category: UI for WinForms
Type: Bug Report
0

Repro-steps

  1. Create a Form
  2. Add a RadGridView control
  3. Add two Text columns
  4. Run the form
  5. Add a new row to the RadGridView with values "a" and "b"
  6. Add a another row to the RadGridView with values "c" and "d"
  7. Select the first row and copy the row values
  8. Select the first cell of the second row and paste the values

Expected behavior

  • The values "a" and "b" are in the second row

Observed behavior

  • The values "ab" and "d" are in the second row

 

Completed
Last Updated: 12 Oct 2022 06:42 by ADMIN
Release R3 2022 SP2

Repro-steps

  1. Create a Form
  2. Add a RadGridView control
  3. Add two Text columns
  4. Run the form
  5. Add a new row to the RadGridView with values "a" and "b"
  6. In Excel fill a row with two cells with values "c" and "d"
  7. Select those cells and copy them to the clipboard
  8. In the RadGridView select the first cell of the row
  9. Paste the data

Expected behavior

  • The values "c" and "d" are in the row

Observed behavior

  • The values "System.IO.MemoryStream" and "b" are in the row

Extra info

If the first column is of another type (like GridViewDecimalColumn) a DataError occurs (because "System.IO.MemoryStream" cannot be parces to a decimal).

 

Completed
Last Updated: 11 Oct 2022 12:23 by ADMIN
Release R3 2022 SP2
Created by: Sandor
Comments: 2
Category: UI for WinForms
Type: Bug Report
0
The latest public release Telerik_UI_For_WinForms_2022_3_921_source.zip contains all of the git repository its 1001 MB, while the lastest was 224 MB.
Completed
Last Updated: 23 Sep 2022 13:07 by ADMIN
Release R3 2022
Created by: Martin
Comments: 1
Category: UI for WinForms
Type: Bug Report
0

Searching for a workaround for a previously reported bug, in walked into a little thing:


private void SelectAllCells()
    {
      GridViewRowInfoEnumerator rowInfoEnumerator = new GridViewRowInfoEnumerator((IHierarchicalRow) this.GridViewElement.Template);
      List<GridViewCellInfo> gridViewCellInfoList = new List<GridViewCellInfo>();
      this.MasterTemplate.SelectedCells.BeginUpdate();
      this.MasterTemplate.SelectedCells.Clear();
      while (rowInfoEnumerator.MoveNext())
      {
        GridViewRowInfo current = rowInfoEnumerator.Current;
        if (current.CanBeSelected)
        {
          foreach (GridViewCellInfo cell in current.Cells)
            this.MasterTemplate.SelectedCells.Add(cell);
        }
      }
      this.MasterTemplate.SelectedCells.EndUpdate(true);
    }
The local gridViewCellInfoList is never used and can therefore be removed, improving performance and memory usage in very very very small way.
Completed
Last Updated: 23 Sep 2022 13:07 by ADMIN
Release R3 2022
Created by: Dinko
Comments: 0
Category: UI for WinForms
Type: Feature Request
0
You could achieve a similar behavior using a custom form. More information can be found in the Add SplashScreen to your application KB article in our documentation.
Completed
Last Updated: 23 Sep 2022 13:07 by ADMIN
Release R3 2022

I am rewriting the RadGridViewPaste-mechanism. Therefor I want to call PastingCellClipboardContent-event using the EventDispatcher.CellClipboardPaste. therefor I need the class GridViewCellValueEventArgs. It has two constructors:

  1. A constructor with indexes. If this one is used, properties RowInfo and Column will always be null.
  2. A constructor which accepts a row and column as parameters. All properties are set and usable.

The second constructor is marked as Internal, not Public. 

Request: Can this constructor be made Public?

Completed
Last Updated: 23 Sep 2022 13:07 by ADMIN
Release R3 2022

1. Set ThemeResolutionService.AllowAnimations = false;

2. Run the attached project and set a filter via the GridFilterButton popup

3. Click "Clear filter" option in the GridFilterButton popup

 

You will see that the GirdFilterButton visual indication is of an applied filter. However, there is no applied filter.