In Development
Last Updated: 03 Feb 2023 15:42 by ADMIN
Scheduled for R1 2023 SP1
Move and Size items from ContextMenu are not working. 
In Development
Last Updated: 03 Feb 2023 09:08 by ADMIN
Scheduled for R1 2023 SP1

An exception occurs when trying to export the RadGridView using the ExportToPDF class with the following message.

System.SystemException: 'System.MethodAccessException: Attempt by security transparent method 'Telerik.Pdf.Gdi.GdiFontEnumerator.get_FamilyNames()' to call native code through method 'Telerik.WinControls.NativeMethods.EnumFontFamiliesEx(IntPtr, LOGFONT, FontEnumDelegate, Int32, Int32)' failed.  Methods must be security critical or security safe-critical to call native code.
   at Telerik.Pdf.Gdi.GdiFontEnumerator.get_FamilyNames()
   at Telerik.Apoc.Pdf.FontSetup.AddSystemFonts(FontType fontType)
   at Telerik.Apoc.Render.Pdf.PdfRenderer.SetupFontInfo(FontInfo fontInfo)
   at Telerik.Apoc.Fo.FOTreeBuilder.Parse(XmlReader reader)'

This exception is observed only when the referenced DLLs target the .Net Framework 4.8 version.

In Development
Last Updated: 02 Feb 2023 09:26 by ADMIN
Scheduled for R1 2023 SP1

Steps to reproduce:

1. Bind the grid and enable the search row

2. Enter some search text

3. Delete records from the applied DataSource collection. It may be necessary to perform the delete operation several times before the error occurs.

The error can be reproduced with the following code snippet: 

    Dim dt As New DataTable
    Sub New()

        InitializeComponent()

        dt.Columns.Add("Id", GetType(Integer))
        dt.Columns.Add("Name", GetType(String))
        For index = 1 To 10000
            dt.Rows.Add(index, Guid.NewGuid.ToString())

        Next
        Me.RadGridView1.DataSource = dt
        Me.RadGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill

        Me.RadGridView1.AllowSearchRow = True

    End Sub

    Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
        For index = 1 To 50
            dt.Rows.RemoveAt(0)
        Next
    End Sub

There is a sample project attached as well and its result is illustrated in the gif file.

Stack trace:

   at Telerik.WinControls.UI.MasterGridViewTemplate.set_CurrentRow(GridViewRowInfo value)
   at Telerik.WinControls.UI.RadGridView.set_CurrentRow(GridViewRowInfo value)
   at Telerik.WinControls.UI.GridViewSearchRowInfo.SetCurrent(GridSearchResultCellInfo cell)
   at Telerik.WinControls.UI.GridViewSearchRowInfo.SetCurrent(GridSearchResultCellInfo cell, Boolean checkInvokeRequired)
   at Telerik.WinControls.UI.GridViewSearchRowInfo.SelectNextSearchResult()
   at Telerik.WinControls.UI.GridViewSearchRowInfo.Search(String criteria)
   at Telerik.WinControls.UI.GridViewSearchRowInfo.Telerik.WinControls.UI.IGridViewEventListener.PostProcessEvent(GridViewEvent eventData)
   at Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessCollection(GridViewEvent gridEvent, PriorityWeakReferenceList list, GridEventProcessMode processMode)
   at Telerik.WinControls.UI.GridViewSynchronizationService.NotifyListeners(GridViewEvent gridEvent)
   at Telerik.WinControls.UI.GridViewSynchronizationService.FlushEvents()
   at Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewEvent gridEvent)
   at Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewTemplate template, GridViewEvent eventData, Boolean postUI)
   at Telerik.WinControls.UI.GridViewRowCollection.DispatchDataViewChangedEvent(DataViewChangedEventArgs args, GridEventType type)
   at Telerik.WinControls.UI.GridViewRowCollection.ListSource_CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
   at Telerik.WinControls.Data.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   at Telerik.WinControls.Data.RadListSource`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
   at Telerik.WinControls.Data.RadListSource`1.RemoveItem(Int32 index)
   at Telerik.WinControls.Data.RadListSource`1.currencyManager_ListChanged(Object sender, ListChangedEventArgs e)
   at System.Windows.Forms.CurrencyManager.OnListChanged(ListChangedEventArgs e)
   at System.Windows.Forms.CurrencyManager.List_ListChanged(Object sender, ListChangedEventArgs e)
   at System.Windows.Forms.BindingSource.OnListChanged(ListChangedEventArgs e)
   at System.Windows.Forms.BindingSource.InnerList_ListChanged(Object sender, ListChangedEventArgs e)
   at System.ComponentModel.BindingList`1.OnListChanged(ListChangedEventArgs e)
   at System.ComponentModel.BindingList`1.FireListChanged(ListChangedType type, Int32 index)
   at System.ComponentModel.BindingList`1.RemoveItem(Int32 index)
   at System.Collections.ObjectModel.Collection`1.Remove(T item)
   at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Remove(Object value)
   at System.Windows.Forms.BindingSource.Remove(Object value)

 

In Development
Last Updated: 02 Feb 2023 09:25 by ADMIN
Scheduled for R1 2023 SP1
Created by: martin
Comments: 1
Category: TaskBoard
Type: Feature Request
0

We want to sort a column (the cards in specific Column) in a RadTaskboard. It would be good to have the possibility to use a custom comparer as well

In Development
Last Updated: 02 Feb 2023 09:25 by ADMIN
Scheduled for R1 2023 SP1
While using a RadOverlayManager to indicate a long-lasting operation, calling the  RadOverlayManager.Close method puts the main form behind the other opened applications. A sample project is attached.
In Development
Last Updated: 02 Feb 2023 09:24 by ADMIN
Scheduled for R1 2023 SP1

Open the Demo application >> Interactive Forms example and apply the Office2019Dark theme. You will notice that if the text field enters edit mode, it is difficult to read the input due to black fore color and black backcolor:

In Development
Last Updated: 02 Feb 2023 09:24 by ADMIN
Scheduled for R1 2023 SP1

When using Crystal or CrystalDark themes, the resize cursor is not showing to widen/shrink the columns:

Expected:

Actual:

In Development
Last Updated: 02 Feb 2023 09:23 by ADMIN
Scheduled for R1 2023 SP1
1. Change the theme to FluentDark using the dropdown located at the very top left of the app form (it should say Fluent as default). 
2. Select the Administration View ribbon group, located at the very left of the form ribbon
3. Select any option from the dropdown menu that appears 
You should see that the borders around the ribbon groups appear, and  once the mouse hovers over a collection is 'refreshes' them and the issue is then not repeatable for that group of buttons (even after another theme change). As mentioned in the previous ticket, this issue is only repeatable once per application launch
In Development
Last Updated: 02 Feb 2023 09:23 by ADMIN
Scheduled for 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.

 

In Development
Last Updated: 02 Feb 2023 09:23 by ADMIN
Scheduled for R1 2023 SP1
When a CUT operation is executed the control is not visually synchronized with the data cell values.
In Development
Last Updated: 02 Feb 2023 09:22 by ADMIN
Scheduled for R1 2023 SP1

When I use the Copy method in the RadGridView, the content is copied to the clipboard in multiple formats. Each format can be cancelled. If a format is cancelled it is not even serialized into the DataObject. This way a programmer can replace the copy-routine for that format with his own.

When I do the same with RadVirtualGrid, and I only want to copy format CSV and I want to cancel the rest, nothing is copied to the clipboard. The funny thing is, inspecting the code, the data is always serialized to the DataObject BEFORE the event is fired to find out if that action is needed. This is a performance penalty.

So these two behaviors are inconsistent. It is also inconsistent the the Paste-operations of both grids.

Current code:

public void CopyToClipboard(
      int startRow,
      int startColumn,
      int endRow,
      int endColumn,
      VirtualGridViewInfo viewInfo,
      bool selectedOnly,
      bool cut)
    {
      DataObject dataObject = new DataObject();
      string data1 = this.ProcessContent(DataFormats.Text, startRow, startColumn, endRow, endColumn, viewInfo, selectedOnly, cut);
      dataObject.SetData(DataFormats.UnicodeText, false, (object) data1);
      VirtualGridClipboardEventArgs args1 = new VirtualGridClipboardEventArgs(false, DataFormats.UnicodeText, dataObject, this.CurrentCell.ViewInfo);
      this.OnCopying(args1);
      if (args1.Cancel)
        return;
      dataObject.SetData(DataFormats.Text, false, (object) data1);
      VirtualGridClipboardEventArgs args2 = new VirtualGridClipboardEventArgs(false, DataFormats.Text, dataObject, this.CurrentCell.ViewInfo);
      this.OnCopying(args2);
      if (args2.Cancel)
        return;
      string data2 = this.ProcessContent(DataFormats.CommaSeparatedValue, startRow, startColumn, endRow, endColumn, viewInfo, selectedOnly, cut);
      dataObject.SetData(DataFormats.CommaSeparatedValue, false, (object) data2);
      VirtualGridClipboardEventArgs args3 = new VirtualGridClipboardEventArgs(false, DataFormats.CommaSeparatedValue, dataObject, this.CurrentCell.ViewInfo);
      this.OnCopying(args3);
      if (args3.Cancel)
        return;
      Clipboard.SetDataObject((object) dataObject);
    }
Suggested code:


public void CopyToClipboard(
	int startRow,
	int startColumn,
	int endRow,
	int endColumn,
	VirtualGridViewInfo viewInfo,
	bool selectedOnly,
	bool cut)
{
	DataObject dataObject = new DataObject();

	VirtualGridClipboardEventArgs eventArgs = new VirtualGridClipboardEventArgs(false, DataFormats.UnicodeText, dataObject, CurrentCell.ViewInfo);
	OnCopying(eventArgs);
	bool useText = !eventArgs.Cancel;
	
	eventArgs = new VirtualGridClipboardEventArgs(false, DataFormats.UnicodeText, dataObject, CurrentCell.ViewInfo);
	OnCopying(eventArgs);
	bool useUnicodeText = !eventArgs.Cancel;

	if (useText || useUnicodeText)
	{
		string text = __instance.ProcessContent(DataFormats.Text, startRow, startColumn, endRow, endColumn, viewInfo, cut);
		if (useText)
			dataObject.SetData(DataFormats.Text, false, text);
		if (useUnicodeText)
			dataObject.SetData(DataFormats.UnicodeText, false, text);
	}
	eventArgs = new VirtualGridClipboardEventArgs(false, DataFormats.Text, dataObject, CurrentCell.ViewInfo);
	OnCopying(eventArgs);
	if (!eventArgs.Cancel)
	{
		string csv = __instance.ProcessContent(DataFormats.CommaSeparatedValue, startRow, startColumn, endRow, endColumn, viewInfo, selectedOnly, cut);
		dataObject.SetData(DataFormats.CommaSeparatedValue, false, csv);
	}
	
	if (dataObject.GetFormats().Length > 0)
		Clipboard.SetDataObject(dataObject);
}

In Development
Last Updated: 02 Feb 2023 09:22 by ADMIN
Scheduled for R1 2023 SP1

RadVirtualGrid.Selection.HasSelection (VirtualGridSelection.HasSelection) or is never false.

RadVirtualGrid grid = new RadVirtualGrid();
var hasSelection1 = grid.Selection.HasSelection; 
_grid.Selection.ClearSelection();
var hasSelection2 = grid.Selection.HasSelection;

After initializing the grid, and not loading anything, HasSelection is true, while nothing is selected.

After clearing the selection, HasSelection remains true.

This property is used in your own code as a pretest for some operations. (Like Copy or Cut).

Am I interpreting this property the wrong way?

In Development
Last Updated: 02 Feb 2023 09:21 by ADMIN
Scheduled for R1 2023 SP1
Created by: Martin
Comments: 1
Category: VirtualGrid
Type: Bug Report
0

Repro steps:

  • Create a RadVirtualGrid
  • Fill it with some records.
  • Make sure nothing is selected (RadVirtualGridElement.CurrentCell is null)
  • Press CTRL-C
  • A NullReferenceException is thrown (this because RadVirtualGridElement.CopyToClipboard accesses CurrentCell.ViewInfo while CurrentCell is null.)

Exception:

Message             : Object reference not set to an instance of an object.
Type                : System.NullReferenceException
Source              : Telerik.WinControls.GridView
Stack trace         : Telerik.WinControls.UI.RadVirtualGridElement.CopyToClipboard(Int32 startRow, Int32 startColumn, Int32 endRow, Int32 endColumn, VirtualGridViewInfo viewInfo, Boolean selectedOnly, Boolean cut)
                      Telerik.WinControls.UI.RadVirtualGridElement.CopySelection()
                      Turien.Windows.Forms.Telerik.VirtualGrid.VirtualGridViewPlus.RadVirtualGridElementPlus.CopySelection()
                      Turien.Windows.Forms.Telerik.VirtualGrid.VirtualGridViewPlus.VirtualGridInputBehaviorPlus.HandleUnhandledKeys(KeyEventArgs keys)
                      Telerik.WinControls.UI.VirtualGridInputBehavior.HandleKeyDown(KeyEventArgs args)
                      Telerik.WinControls.UI.RadVirtualGrid.OnKeyDown(KeyEventArgs e)
                      System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
                      System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
                      System.Windows.Forms.Control.WmKeyChar(Message& m)
                      System.Windows.Forms.Control.WndProc(Message& m)
                      System.Windows.Forms.ScrollableControl.WndProc(Message& m)
                      Telerik.WinControls.RadControl.WndProc(Message& m)
                      System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
                      System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
                      System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
                      System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
                      System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
                      System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
                      System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
                      System.Windows.Forms.Application.Run(Form mainForm)
                      Turien.Schade.PremiumCalculator.LookupTableManager.Program.Main()


In Development
Last Updated: 02 Feb 2023 09:21 by ADMIN
Scheduled for R1 2023 SP1

When copying to from the RadVirtualGrid to the clipboard, the HTML format is not supported.

I was thinking about creating a feature request, but I really think this is a bug, because:

  1. It is not consistent with its little brother RadGridView, which does support HTML.
  2. HTML should be supported by Teleriks own documentation: https://docs.telerik.com/devtools/winforms/controls/virtualgrid/copy-paste-cut 

Please, implement the support for HTML.

In Development
Last Updated: 02 Feb 2023 09:21 by ADMIN
Scheduled for R1 2023 SP1
Created by: thomas
Comments: 1
Category: TextBoxControl
Type: Bug Report
0

To reproduce: 

            this.radTextBoxControl1.Font = new Font("Arial", 10f, FontStyle.Regular);
            this.radTextBoxControl1.Text = @"B\3\B,3,B.3.";

            this.radTextBoxControl2.Font = new Font("Segoe UI", 8f, FontStyle.Regular);
            this.radTextBoxControl2.Text = @"B\3\B,3,B.3."; 

            this.textBox1.Font = new Font("Segoe UI", 9f, FontStyle.Regular);
            this.textBox1.Text = @"B\3\B,3,B.3.";

            this.radTextBoxControl1.Enabled = this.radTextBoxControl2.Enabled = 
            this.textBox1.Enabled = false;

The text with "Segoe UI" is partially visible:

 

In Development
Last Updated: 27 Jan 2023 15:15 by ADMIN
Scheduled for R1 2023 SP1

Run the project and load a document with bookmarks. Try to click the two buttons in order to switch between thumbnails/bookmarks. 

        private void radButton1_Click(object sender, EventArgs e)
        {
            this.radPdfViewer1.ShowThumbnails();
        }

        private void radButton2_Click(object sender, EventArgs e)
        {
            this.radPdfViewer1.ShowBookmarks();
        }

Expected: clicking the two buttons should switch between bookmarks/thumbnails

Actual: the user is stuck to bookmarks

In Development
Last Updated: 27 Jan 2023 14:44 by ADMIN
Scheduled for R1 2023 SP1

Use the following code: 

    Public Sub New()
        InitializeComponent()

        RadSchedulerReminder1.TimeInterval = 500

        Dim appointment As New Appointment(DateTime.Now.AddDays(-1), TimeSpan.FromHours(1), "A")
        appointment.Reminder = New TimeSpan(10000)
        Me.RadScheduler1.Appointments.Add(appointment)

        Dim appointment2 As New Appointment(DateTime.Now.AddHours(-2), TimeSpan.FromHours(1), "B")
        appointment2.Reminder = New TimeSpan(10000)
        Me.RadScheduler1.Appointments.Add(appointment2)

        RadSchedulerReminder1.StartReminderInterval = Date.Now.AddDays(-1)
        RadSchedulerReminder1.EndReminderInterval = Date.Now.AddDays(1)

    End Sub

    Private Sub RadForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        RadSchedulerReminder1.StartReminder()

        RadScheduler1.ActiveViewType = SchedulerViewType.Week

    End Sub

Drag "A" on the same interval as "B". You will notice that the reminder dialog will continue to show only "B".

In Development
Last Updated: 27 Jan 2023 13:13 by ADMIN
Scheduled for R1 2023 SP1

When closing the MDI child, its FormClosing event is called twice. This is not observed if we close its HostWindow first.

 

In Development
Last Updated: 27 Jan 2023 12:32 by ADMIN
Scheduled for 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?

In Development
Last Updated: 23 Jan 2023 14:22 by ADMIN
Scheduled for R1 2023 SP1 (LIB 2023.1.124)
A large image is rendered slowly and the memory consumption is huge. 
1 2