10 Nov to 17 Nov 2025: highlights of the new online resources that we published last week.
Summary: This article explains how to add the Telerik UI for WinForms license key in an add-in project (e.g., VSTO/COM) to avoid runtime licensing errors. It shows where to register the key during add-in startup and how to embed the license file as an Embedded Resource so the license is applied before any Telerik controls are instantiated.
Article: https://docs.telerik.com/devtools/winforms/controls/pdfviewer/features/ai-summarization
Summary: RadPdfViewer for WinForms supports AI summarization of PDF content, allowing you to generate summaries for the entire document or the currently selected text. You configure an OpenAI or Azure OpenAI provider (API key and model), enable the built-in summarization UI/commands, and customize prompt templates to control the output for your use case.
Article: https://docs.telerik.com/devtools/winforms/knowledge-base/calendar-add-custom-space-footer
Summary: Learn how to add a custom footer area to RadCalendar in Telerik UI for WinForms by extending the control and injecting a LightVisualElement into its element tree to reserve space at the bottom. The article shows how to set a fixed height, align the footer, and update layout so the footer persists across theme and view changes, letting you host custom content (labels, buttons) beneath the calendar.
Article: https://docs.telerik.com/devtools/winforms/knowledge-base/chat-intercept-html-links
Summary: This article shows how to intercept and handle HTML anchor links inside Telerik UI for WinForms RadChat messages by using the MessageFormatting event to access the message’s markup text element and subscribing to its LinkClicked/HyperlinkClicked event. It demonstrates capturing the clicked URL and executing custom logic (for example, open in a browser or cancel navigation) so you can control link behavior per message.
Article: https://docs.telerik.com/devtools/winforms/knowledge-base/chat-resize-wrap-text-cardaction
Summary: This article shows how to make RadChat CardAction text wrap in Telerik UI for WinForms when the control is resized. You implement a custom ChatElementFactory that returns a CardAction element with TextWrap enabled and width-aware measuring (e.g., updating MaxSize on SizeChanged), so long labels break across lines and the card layout reflows correctly.
Article: https://docs.telerik.com/devtools/winforms/knowledge-base/datetimepicker-customizing-footer-panel
Summary: This article shows how to customize the footer panel of the popup RadCalendar used by the Telerik WinForms RadDateTimePicker. You’ll access the calendar’s footer element when the drop-down opens, hide or rename the default Today/Clear buttons, add custom RadButtonElements, wire Click handlers to set the picker’s Value, and close the popup programmatically.
Article: https://docs.telerik.com/devtools/winforms/knowledge-base/grid-custom-filtering-self-referencing-hierarchy
Summary: This article shows how to implement custom filtering in Telerik WinForms RadGridView when using a self-referencing hierarchy (Id/ParentId). You will handle GridViewTemplate.CustomFiltering to evaluate matches across levels, keep parent rows visible when any child satisfies the filter (and optionally the reverse), and preserve the hierarchical structure while applying FilterDescriptors.
Article: https://docs.telerik.com/devtools/winforms/knowledge-base/gridview-snap-one-row-per-scroll
Summary: Learn how to make RadGridView (Telerik UI for WinForms) snap the viewport to full rows, scrolling exactly one row per mouse wheel action. The article shows intercepting MouseWheel to suppress the default pixel-based scroll and using TableElement.RowScroller APIs (optionally aligning VScrollBar.SmallChange to the row height) to implement discrete, row-based scrolling.
Article: https://docs.telerik.com/devtools/winforms/controls/navigationview/kb-related-articles
Summary: This page indexes Knowledge Base articles for the Telerik UI for WinForms NavigationView control. Use it to quickly locate how-to and troubleshooting guidance for configuration, customization, data binding, item population, styling, selection, and event handling.
Article: https://docs.telerik.com/devtools/winforms/ai-coding-assistant/mcp-server-as-nuget
Summary: This article shows you how to add and configure the MCP Server as a NuGet package in a Telerik UI for WinForms project to enable the AI Coding Assistant. You install the package, set up your LLM provider (OpenAI or Azure OpenAI), wire up the server and tools, and initialize it in your app so the assistant can access your workspace and files.
Feel free to check them out and share your thoughts!
The Telerik Team

J'ai 2 toolwindows.
J'ai une toolwindows 'filtre'. c'est pour la gestion des filtres. Elle se trouve à gauche
J'ai une toolwindows 'Aide'. C'est pour la gérer une aide. Elle se trouve à droite.
Je veux interdire la toolwindows 'filtre' d'être flotante. Elle doit toujours être à gauche.
Comment peut-on faire.
Merci
Thank's
Laurent.

Hi.
I'm facing and issue with displaying hierarchical data (self-referencing) in grid when missing parent items in data source - only part of data is displayed.
1. Add grid to form
1.var grid = new RadGridView {Dock = DockStyle.Fill};2.this.Controls.Add(grid);3.grid.Columns.Add("cName","Name","Name"); //Dummy column displaying Name
2. Setup self-referencing
1.var col1 = new GridViewTextBoxColumn("hiddenColumnId", "Id");2.var col2 = new GridViewTextBoxColumn("hiddenColumnParentId", "ParentId");3.grid.MasterTemplate.Columns.Add(col1);4.grid.MasterTemplate.Columns.Add(col2);5.grid.Columns["hiddenColumnId"].IsVisible = false;6.grid.Columns["hiddenColumnParentId"].IsVisible = false;7.grid.Relations.AddSelfReference(grid.MasterTemplate, "hiddenColumnId", "hiddenColumnParentId");
3. Create dummy data type
01.class Item02.{03. public Item(int id, string name, int? parentId = null)04. {05. Id = id;06. Name = name;07. ParentId = parentId;08. }09. 10. public int Id { get; set; }11. public string Name { get; set; }12. public int? ParentId { get; set; }13.}
4. Add new data source
01.var items = new List<Item>02.{03. new Item(1,"1"),04. new Item(2,"1.1",1),05. new Item(3,"1.2",1),06. new Item(7,"1.2.1",3),07. new Item(4,"2"),08. new Item(5,"2.1",4),09. new Item(6,"2.2",4)10.};11.grid.DataSource = items;
And as expected a correct tree structure is displayed
1.12.-1.13.-1.24.--1.2.15.26.-2.17.-2.2
However in my case due to busines logic I have only a subset of data - all except item "1" and "2".
Instead of ex
1.1.12.1.23.-1.2.14.2.15.2.2
I can see only children of first missing parent item. Although the number of rows is matching correct total number of item to be displayed (5) only part of items are visible (3).
1.1.12.1.23.-1.2.1
As a workaroud I can modify data source and remove parent assignement from objects if parent is missing in data source either on data preparation or DataBindingComplete event.
01.private void Grid_DataBindingComplete(object sender, GridViewBindingCompleteEventArgs e)02. {03. var grid = sender as RadGridView;04. 05. // Get existing items06. var ids = new List<object>();07. foreach (var id in grid.Columns["hiddenColumnId"].DistinctValues)08. {09. ids.Add(id);10. }11. 12. // Remove missing parents13. foreach (var row in grid.Rows)14. {15. var parentId = row.Cells["hiddenColumnParentId"].Value;16. if (!ids.Contains(parentId))17. row.Cells["hiddenColumnParentId"].Value = null;18. }19.}
However this solution is not suitable, because it is modifying data providing inconsistant state - using that data in code I may falsly assume that the item does not have a parent while it has.
Any ideas how to solve this issue?
Regargs
Greg
Hi
I refer to the aritcle "How to Change PageViewMode for the Nested Levels in RadGridView - Telerik UI for WinForms"
I have a setting implemented that is like in the article.
It is working but has a flaw:
When an entry of the second tier is expanded and I then collapse the corresponding entry in the first tier and re-expand it, I get an NullReferenceException coming out of Telerik code:
System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei Telerik.WinControls.UI.RowsContainerElement.UpdateMergeCells(GridCellElement cellElement) bei Telerik.WinControls.UI.RowsContainerElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeViewElement(RectangleF viewElementRect) bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.RadPageViewElementBase.ArrangeChildren(SizeF finalSize) bei Telerik.WinControls.UI.RadPageViewElementBase.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.ArrangeContent(RectangleF clientRect) bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.PerformArrange(RectangleF clientRect) bei Telerik.WinControls.UI.RadPageViewElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.LightVisualElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.GridDetailViewRowElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.VirtualizedStackContainer`1.ArrangeElementCore(RadElement element, SizeF finalSize, RectangleF arrangeRect) bei Telerik.WinControls.UI.VirtualizedStackContainer`1.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.UI.ScrollableRowsContainerElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.RowsContainerElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeViewElement(RectangleF viewElementRect) bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.RadPageViewElementBase.ArrangeChildren(SizeF finalSize) bei Telerik.WinControls.UI.RadPageViewElementBase.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.ArrangeContent(RectangleF clientRect) bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.PerformArrange(RectangleF clientRect) bei Telerik.WinControls.UI.RadPageViewElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.UI.RadPageViewExplorerBarElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.LightVisualElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.GridDetailViewRowElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.VirtualizedStackContainer`1.ArrangeElementCore(RadElement element, SizeF finalSize, RectangleF arrangeRect) bei Telerik.WinControls.UI.VirtualizedStackContainer`1.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.UI.ScrollableRowsContainerElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.RowsContainerElement.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeViewElement(RectangleF viewElementRect) bei Telerik.WinControls.UI.ScrollViewElement`1.ArrangeOverride(SizeF finalSize) bei Telerik.WinControls.RadElement.ArrangeCore(RectangleF finalRect) bei Telerik.WinControls.RadElement.Arrange(RectangleF finalRect) bei Telerik.WinControls.Layouts.ContextLayoutManager.UpdateLayout() bei Telerik.WinControls.UI.GridTableElement.UpdateOnRowExpandedCore(GridViewRowInfo row) bei Telerik.WinControls.UI.GridTableElement.UpdateOnRowExpanded(GridViewRowInfo row) bei Telerik.WinControls.UI.GridTableElement.UpdateOnRowPropertyChanged(GridViewRowInfo row, GridPropertyChangedEventArgs e) bei Telerik.WinControls.UI.GridTableElement.ProcessRowEvent(GridViewRowInfo row, GridViewEvent eventData) bei Telerik.WinControls.UI.GridTableElement.Telerik.WinControls.UI.IGridViewEventListener.ProcessEvent(GridViewEvent eventData) bei Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessCollection(GridViewEvent gridEvent, PriorityWeakReferenceList list, GridEventProcessMode processMode) bei Telerik.WinControls.UI.GridViewEventProcessEntity.ProcessEvent(GridViewEvent gridEvent) bei Telerik.WinControls.UI.GridViewSynchronizationService.NotifyListeners(GridViewEvent gridEvent) bei Telerik.WinControls.UI.GridViewSynchronizationService.FlushEvents() bei Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewEvent gridEvent) bei Telerik.WinControls.UI.GridViewSynchronizationService.DispatchEvent(GridViewTemplate template, GridViewEvent eventData, Boolean postUI) bei Telerik.WinControls.UI.GridViewRowInfo.DispatchEvent(KnownEvents id, GridEventType type, GridEventDispatchMode dispatchMode, Object originator, Object[] arguments) bei Telerik.WinControls.UI.GridViewRowInfo.OnPropertyChanged(PropertyChangedEventArgs args) bei Telerik.WinControls.UI.GridViewDataRowInfo.OnPropertyChanged(PropertyChangedEventArgs e) bei Telerik.WinControls.UI.GridViewHierarchyRowInfo.OnPropertyChanged(PropertyChangedEventArgs e) bei Telerik.WinControls.UI.GridViewRowInfo.SetBooleanProperty(String propertyName, Int32 propertyKey, Boolean value) bei Telerik.WinControls.UI.GridViewRowInfo.set_IsExpanded(Boolean value) bei Telerik.WinControls.UI.GridGroupExpanderCellElement.expander_RadPropertyChanged(Object sender, RadPropertyChangedEventArgs e) bei Telerik.WinControls.RadPropertyChangedEventHandler.Invoke(Object sender, RadPropertyChangedEventArgs e) bei Telerik.WinControls.RadObject.OnPropertyChanged(RadPropertyChangedEventArgs e) bei Telerik.WinControls.RadElement.OnPropertyChanged(RadPropertyChangedEventArgs e) bei Telerik.WinControls.VisualElement.OnPropertyChanged(RadPropertyChangedEventArgs e) bei Telerik.WinControls.RadComponentElement.OnPropertyChanged(RadPropertyChangedEventArgs e) bei Telerik.WinControls.RadItem.OnPropertyChanged(RadPropertyChangedEventArgs e) bei Telerik.WinControls.UI.UIItemBase.OnPropertyChanged(RadPropertyChangedEventArgs e) bei Telerik.WinControls.UI.LightVisualElement.OnPropertyChanged(RadPropertyChangedEventArgs e) bei Telerik.WinControls.UI.ExpanderItem.OnPropertyChanged(RadPropertyChangedEventArgs e) bei Telerik.WinControls.RadObject.RaisePropertyNotifications(RadPropertyValue propVal, Object oldValue, Object newValue, ValueSource oldSource) bei Telerik.WinControls.RadObject.SetValueCore(RadPropertyValue propVal, Object propModifier, Object newValue, ValueSource source) bei Telerik.WinControls.RadElement.SetValueCore(RadPropertyValue propVal, Object propModifier, Object newValue, ValueSource source) bei Telerik.WinControls.UI.ExpanderItem.set_Expanded(Boolean value) bei Telerik.WinControls.UI.GridExpanderItem.set_Expanded(Boolean value) bei Telerik.WinControls.UI.ExpanderItem.ToggleExpanded() bei Telerik.WinControls.UI.ExpanderItem.OnMouseUp(MouseEventArgs e) bei Telerik.WinControls.RadElement.OnCLREventsRise(RoutedEventArgs args) bei Telerik.WinControls.RadElement.OnBubbleEvent(RadElement sender, RoutedEventArgs args) bei Telerik.WinControls.RadElement.RaiseBubbleEvent(RadElement sender, RoutedEventArgs args) bei Telerik.WinControls.RadItem.RaiseBubbleEvent(RadElement sender, RoutedEventArgs args) bei Telerik.WinControls.RadElement.RaiseRoutedEvent(RadElement sender, RoutedEventArgs args) bei Telerik.WinControls.RadElement.DoMouseUp(MouseEventArgs e) bei Telerik.WinControls.ComponentInputBehavior.OnMouseUp(MouseEventArgs e) bei Telerik.WinControls.RadControl.OnMouseUp(MouseEventArgs e) bei Telerik.WinControls.UI.RadGridView.OnMouseUp(MouseEventArgs e) bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) bei System.Windows.Forms.Control.WndProc(Message& m) bei System.Windows.Forms.ScrollableControl.WndProc(Message& m) bei Telerik.WinControls.RadControl.WndProc(Message& m) bei Telerik.WinControls.UI.RadGridView.WndProc(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Hi,
I was previously developing with Telerik UI for WinForms 2025 Q3. Recently, I installed the latest version (2025 Q4) using the MSI installer and then manually updated the NuGet packages in my project to complete the upgrade without using the Update Wizard. Everything works fine now.
However, every time I open the project in Visual Studio, I still see the notification:
"You are using an older version of Telerik UI for WinForms for this project. There is a new version available for this computer. Update Now"
Is there a way to disable or hide this notification after manually updating the NuGet packages?
Thanks in advance!

¡Hi everyone! Is there a possibility to have a RadContexMenu with rounded corners ?
I already change the styles via theme, but when I open the context menu, it has some white square corners behind.
The version I have right now is 2016 SP1

Our application doesn't explicitly set a default theme so it defaults to ControlDefault.
One screen uses the MaterialBlueGrey theme, so I wanted the related MessageBoxes to also use that theme.
Per the instructions I used the following code:
RadMessageBox.SetThemeName("MaterialBlueGrey");
RadMessageBox.Show("MESSAGE");
RadMessageBox.SetThemeName("ControlDefault");The problem is that, although the overall look goes back to the default theme, some elements stay with the MaterialBlueGrey theme. For example: the button height & caption font.
I tried all these with the same result:
RadMessageBox.SetThemeName("");
RadMessageBox.ThemeName = "";
RadMessageBox.ThemeName = "ControlDefault";
I have a situation where I have code that executes when the Selected Node is changed.
SelectedNodeChanged
The code in the SelectedNodeChange adds controls to some FlowLayoutPanel.
When a user clicks on a node, you can see the controls being added to the control
but the RadTreeView allows the user to select another node eventhough the SelectedNodeChange event has not finished, which
is now causing issues with the FlowLayoutPanelshowing duplicate controls.
If user waits until all controls are in the FlowLayoutPanel, and then selects another node, everything works as expected.
None of the code that adds the controls to the FlowLayoutPanel are Asynchronous.
I DO NOT have Multiselect = true.
** I have noticed that the RadTreeView acts as though it is Asynchronous when filling it. I have code that fills the nodes and you can select the nodes and see the nodes being added behind the scenes.
Maybe control is Asynchronous when changing selected nodes?

Hello, When I drag and drop an item in PageView, I would like it to create a copy of the item (page) when holding the Control key—either within the same PageView or between different PageViews. Could you help me achieve this? Thank you.
