# 2025 v2.1

## Content

## Calendar

**Bug fixes**

* Fixed incorrect initial selection of date part instead of month when using custom format "MM/dd/yyyy".

## Command

**Bug fixes**

* Fixed NullReferenceException in C1CommandDock when canceling QueryAllowDrop event and DockingStyle is non-default.
* Fixed tab navigation issue with Up Arrow key when Alignment is Left or Right and a tab is hidden.

## Diagram

**Improvements**

* Added keyboard navigation for panning and zooming in FlexDiagram: Use arrow keys to pan, Ctrl + (+) or Ctrl + (–) to scale, and Ctrl + 0 to reset zoom. 
* Minor API changes: Use platform style in event arguments, set node data before NodeCreated event fires, fixed Diagram Rendering/Rendering events to fire, added EdgeCreated event. 
* Added FlexDiagram NodeStyle and EdgeStyle properties to define default appearance of nodes and edges.

## Editor

**Bug fixes**

* [.NET Framework] Fixed exception when loading EditorMode as Preview in RTF Editor due to unhandled XML parsing.

## FlexGrid

**Improvements**

* Updated scrollbar annotations API: Added OnScrollBarAnnotationsUpdating and OnScrollBarAnnotationsUpdated methods.
* Added support for saving FlexGrid data in .xls, .xlsx, .csv, .xlsm, and .xltx formats using SaveExcel method. 

**Bug fixes**

* Fixed text wrapping despite sufficient column width when Styles.Normal.WordWrap is disabled.
* Fixed search failure for strings containing colon (e.g., "d:") when using ApplySearch, now treating them as substrings.
* Fixed an <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">ArgumentOutOfRangeException</span> in <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">C1.Win.FlexGrid</span> that occurred when navigating Column Filter Editor tabs using the keyboard. 
* Fixed missing export of grid background colors using SystemColors.Control to Excel, now preserving colors with gridlines.
* Fixed inconsistent r1 and r2 values in BeforeRowColChange event's NewRange when clicking column header.
* Fixed scrolling issue preventing navigation across custom merged ranges.
* Fixed performance degradation when subtotaling large number of rows with tree column enabled.
* Fixed the <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">ShowSortPositionEnum.Right</span> option for column headers so that sorting markers display correctly on the right when sorting is applied with column filters. 

## FlexReport

**Bug fixes**

* Fixed PageSettings swapping width and height when height is less than width, ensuring correct layout on load.

## FlexViewer

**Bug fixes**

* Fixed a <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">NullReferenceException</span> thrown in FlexViewer when closing the <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">MainRibbonForm</span>.

## Input

**Bug fixes**

* Fixed UI performance and rendering distortion in forms with TableLayoutPanel containing auto-sized C1Label. 
* Fixed ArgumentNullException in C1TextBox when pasting null string. 
* Fixed ignored buffered key input in C1TextBox during form loading, now applying keystrokes on focus.

## List

**Bug fixes**

* Fixed an issue in <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">C1Combo</span> where resetting the <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">DataSource</span> after selecting an item caused an unhandled exception. 

## Themes

**Bug fixes**

* Fixed theme application failure for forms inherited from abstract MS Form base classes. 

## TrueDBGrid

**Improvements**

* Added support for saving C1TrueDBGrid data in .xls, .xlsx, .csv, .xlsm, and .xltx formats using SaveExcel method. 

**Bug fixes**

* Fixed an issue in <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">C1TrueDBGrid</span> where cell contents wrapped instead of being trimmed when <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">Normal</span> style had <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">VerticalAlignment</span> set to Center, <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">Wrap</span> set to NoWrap, and <span class="code" spellcheck="false" data-prosemirror-content-type="mark" data-prosemirror-mark-name="code">Trimming</span> set to Character. 
* Fixed AmbiguousMatchException when saving and loading layout from empty grid.