﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="https://community.devexpress.com/feed-stylesheets/rss.xsl" media="screen"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dx="https://www.devexpress.com/" xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>WinForms Team Blog</title>
    <link>https://community.devexpress.com/Blogs/winforms/default.aspx</link>
    <description />
    <language>en-US</language>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388268</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2026/03/17/winforms-generate-custom-svg-skin-palettes-with-ai-v25-2.aspx</link>
      <category domain="https://community.devexpress.com/Tags/.NET+10">.NET 10</category>
      <category domain="https://community.devexpress.com/Tags/ai">ai</category>
      <category domain="https://community.devexpress.com/Tags/palettes">palettes</category>
      <category domain="https://community.devexpress.com/Tags/skins">skins</category>
      <category domain="https://community.devexpress.com/Tags/SVG">SVG</category>
      <category domain="https://community.devexpress.com/Tags/Theme">Theme</category>
      <category domain="https://community.devexpress.com/Tags/v25.2">v25.2</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <title>WinForms — Generate Custom SVG Skin Palettes with AI (v25.2)</title>
      <description>&lt;p&gt;In our &lt;a target="_blank" href="https://www.devexpress.com/subscriptions/whats-new/"&gt;v25.2 release&lt;/a&gt;, we introduced a preview of our AI-powered custom &lt;strong&gt;SVG skin palette feature&lt;/strong&gt;. This feature transforms how you design application color schemes. It leverages generative AI to interpret natural language instructions and create cohesive palettes that apply seamlessly across your entire WinForms application.&lt;/p&gt;
&lt;div class="Note"&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: We&amp;#39;ve shared our&amp;nbsp;&lt;strong&gt;Generate Custom SVG Skin Palettes with AI&lt;/strong&gt; implementation with the community to gather feedback and evaluate demand for similar features in DevExpress WPF, Blazor, and JS/DevExtreme product lines.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/ai-palettes/devexpress-winforms-ai-palettes-v25.2.png" alt="Generate Custom SVG Skin Palettes with AI - WinForms, DevExpress"&gt;&lt;/p&gt;
&lt;h2 id="how-ai-powered-palette-generation-works"&gt;How AI-Powered Palette Generation Works&lt;/h2&gt;
&lt;p&gt;You describe the desired palette aesthetic/style in the conversational UI with plain language. Sample prompts include: &amp;quot;&lt;em&gt;warm autumn palette&lt;/em&gt;&amp;quot;, &amp;quot;&lt;em&gt;high-contrast accessibility theme&lt;/em&gt;&amp;quot;, or your favorite sports team name. You then refine results in the chat. The system preserves conversation context for the LLM (the conversation history). AI produces a custom palette and applies it programmatically.&lt;/p&gt;
&lt;p&gt;The generated palette includes primary background/foreground colors and accent colors for interactive elements. The palette automatically applies to all DevExpress WinForms UI controls with SVG skin support, which maintains visual consistency throughout the application.&lt;/p&gt;
&lt;p&gt;For technical details and extension options, see the &lt;a href="#under-the-hood-implementation-highlights"&gt;Implementation Highlights&lt;/a&gt; section.&lt;/p&gt;
&lt;h2 id="real-world-use-cases"&gt;Real-World Use Cases&lt;/h2&gt;
&lt;p&gt;This feature addresses common application design scenarios where custom color schemes improve user experience (UX) and business value:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enterprise Branding&lt;/strong&gt;&amp;nbsp;- You generate palettes that align with corporate brand guidelines. You describe brand colors and style in plain language. AI creates a palette with consistent color relationships across all UI controls.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;High-Contrast and Accessibility Palettes&lt;/strong&gt;&amp;nbsp;- You design palettes for users with visual impairments. DevExpress WinForms UI Library already includes &lt;a target="_blank" href="https://docs.devexpress.com/WindowsForms/2399/build-an-application/skins#high-contrast-skins"&gt;built-in high-contrast skins&lt;/a&gt; and &lt;a target="_blank" href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraEditors.WindowsFormsSettings.TrackSystemHighContrastMode"&gt;system high-contrast mode support&lt;/a&gt;. You specify accessibility requirements (such as tritanopia support). AI generates palettes that meet contrast ratio standards and preserve visual clarity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multi-Tenant Applications&lt;/strong&gt;&amp;nbsp;- You generate a unique visual identity for each customer. You can generate and save palettes per tenant programmatically or allow users to customize their workspace (UI) appearance. This feature also accelerates prototyping. You can generate multiple palette options in minutes and present them to stakeholders.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seasonal or Event-based Palettes&lt;/strong&gt;&amp;nbsp;- You refresh application visuals for holidays or campaigns. For example, you can generate palettes for promotions or special events.&lt;/p&gt;
&lt;h2 id="try-the-feature-with-a-github-demo"&gt;Try the Feature with a GitHub Demo&lt;/h2&gt;
&lt;p&gt;We implemented a complete solution that demonstrates AI-powered SVG palette generation in a Windows Forms application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Features&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Live palette preview across DevExpress UI controls&lt;/li&gt;
&lt;li&gt;Instant visual updates during palette generation&lt;/li&gt;
&lt;li&gt;Compare and switch between AI-generated palettes&lt;/li&gt;
&lt;li&gt;Persistent palette storage in JSON format within application settings&lt;/li&gt;
&lt;li&gt;Restore palettes between sessions&lt;/li&gt;
&lt;li&gt;Palette management with delete support&lt;/li&gt;
&lt;li&gt;Configurable AI model selection (&lt;code&gt;gpt-5-mini&lt;/code&gt;, &lt;code&gt;gpt-4o-mini&lt;/code&gt;, &lt;code&gt;gpt-4.1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Support for custom AI services and a rate-limited demo endpoint&lt;/li&gt;
&lt;li&gt;Customizable AI instructions for tailored generation behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a target="_blank" href="https://github.com/DevExpress-Examples/winforms-generate-skin-palettes-with-ai"&gt;Open GitHub Repo&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="prerequisites"&gt;Prerequisites&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;.NET 8+ SDK&lt;/li&gt;
&lt;li&gt;DevExpress WinForms v25.2+&lt;/li&gt;
&lt;li&gt;Microsoft.Extensions.AI (v9.7.1)&lt;/li&gt;
&lt;li&gt;Azure.AI.OpenAI (v2.2.0-beta.5)&lt;/li&gt;
&lt;li&gt;An active AI service subscription (Azure OpenAI, OpenAI, or Ollama)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="Note"&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The demo targets specific &lt;code&gt;Microsoft.Extensions.AI&lt;/code&gt; library versions. Use exact versions to avoid compatibility issues.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id="getting-started"&gt;Getting Started&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Clone the &lt;a target="_blank" href="https://github.com/DevExpress-Examples/winforms-generate-skin-palettes-with-ai"&gt;GitHub repo&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Open the solution in Visual Studio or JetBrains Rider.&lt;/li&gt;
&lt;li&gt;Configure AI service credentials in &lt;code&gt;ChatClientFactory.cs&lt;/code&gt; (or use the rate-limited demo endpoint).&lt;/li&gt;
&lt;li&gt;Build and run the &lt;code&gt;DevExpress.AI.WinForms.AIGeneratePalette.Demo&lt;/code&gt; project.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;AI Generate Palette&lt;/strong&gt; in the Ribbon UI to open the Color Palette Editor.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Use the following prompts to explore the feature:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- Generate a warm autumn palette with rust and gold tones
- Create a high-contrast accessibility-friendly palette for vision impaired users
- Design a modern flat pastel palette inspired by Material Design
- Build a dark mode theme with purple accents
- Make a vibrant tropical palette with coral and turquoise
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The workflow completes in seconds. You describe your vision, review the result across controls, refine output with follow-up prompts (if needed), and save the palette. The generated palette is automatically applied to your WinForms application.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/ai-palettes/devexpress-winforms-generate-skin-pelettes-with-ai.gif" alt="Generate Skin Palettes with AI - DevExpress WinForms UI Controls"&gt;&lt;/p&gt;
&lt;h3 id="ready-to-use-project"&gt;Ready-to-Use Project&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;DevExpress.AI.WinForms.AIGeneratePalette&lt;/code&gt; project is production-ready. You can add it to your solution as-is. &lt;/p&gt;
&lt;p&gt;The project includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A palette generation dialog UI&lt;/li&gt;
&lt;li&gt;AI-powered palette generation logic&lt;/li&gt;
&lt;li&gt;Palette management and persistence support.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can customize AI instructions, modify dialog layout, or extend the feature set based on your application requirements.&lt;/p&gt;
&lt;h2 id="under-the-hood-implementation-highlights"&gt;Under the Hood: Implementation Highlights&lt;/h2&gt;
&lt;p&gt;The example demonstrates key implementation patterns for AI integration in WinForms applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI Integration and Model Flexibility&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The demo application interacts with Azure OpenAI services. It integrates with Microsoft.Extensions.AI library, registers an &lt;code&gt;IChatClient&lt;/code&gt; with the &lt;code&gt;AIExtensionsContainerDesktop&lt;/code&gt; container, and exposes AI capabilities across the application:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;IChatClient chatClient = new Azure.AI.OpenAI.AzureOpenAIClient(
    new Uri(AzureOpenAIEndpoint),
    new System.ClientModel.ApiKeyCredential(AzureOpenAIKey))
    .GetChatClient(ModelId).AsIChatClient();
    
AIExtensionsContainerDesktop.Default.RegisterChatClient(chatClient);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This implementation supports any AI provider that implements &lt;code&gt;IChatClient&lt;/code&gt;. You can switch models without code changes. The example supports &lt;code&gt;gpt-5-mini&lt;/code&gt;, &lt;code&gt;gpt-4o-mini&lt;/code&gt;, and &lt;code&gt;gpt-4.1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Different LLMs may produce different palette results. We tested &lt;strong&gt;AI-powered Color Palette Generation&lt;/strong&gt; primarily with OpenAI GPT models. You can also connect AI services such as Google Gemini, Anthropic Claude, or xAI Grok. We encourage you to try different models and share your feedback on the ones that work best for your specific needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Structured Prompt Engineering&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;GeneratePaletteInstruction.md&lt;/code&gt; file defines precise AI instructions for palette output. These instructions enforce palette structure and color value rules. Carefully crafted instructions ensure consistent and predictable results across different prompts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SVG Palette Manipulation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The example creates and modifies SVG palettes. You define palette colors and register the palette in the active skin. The palette becomes available to all SVG-enabled controls at runtime.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;var svgPalette = new SvgPalette();
svgPalette.Colors.Add(new SvgColor(&amp;quot;Paint&amp;quot;, Color.FromArgb(242, 242, 242)));
svgPalette.Colors.Add(new SvgColor(&amp;quot;Accent Paint&amp;quot;, Color.FromArgb(23, 107, 209)));
// ... additional colors

var commonSkin = CommonSkins.GetSkin(UserLookAndFeel.Default);
commonSkin.CustomSvgPalettes.Add(
    new SvgPaletteKey(commonSkin.CustomSvgPalettes.Count, paletteName), 
    svgPalette);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Conversation State Management&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Our implementation maintains the conversation history. Users can refine palettes through follow-up requests. This creates a flexible, interactive workflow in which each adjustment builds on previous decisions and maintains the integrity of the design process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Palette Persistence and Storage&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The example saves and restores custom palettes across application sessions. The &lt;code&gt;AIPaletteRepository&lt;/code&gt; class serializes palettes to JSON and stores them in application settings. You can extend this option to any storage solution. For example, store palettes in a database for multi-user scenarios, in configuration files for deployment flexibility, or in cloud storage for cross-device access. The example provides a strong foundation for customization based on your preferences.&lt;/p&gt;
&lt;h2 id="share-your-feedback"&gt;Share Your Feedback&lt;/h2&gt;
&lt;p&gt;This AI-powered palette generation feature is experimental, and we need your feedback to determine our next steps. Based on the response from our community, we will consider similar implementations for WPF (AI-generated resource dictionaries and theme palettes), Blazor (dynamic CSS variable values assignment), and DevExtreme.&lt;/p&gt;
&lt;p&gt;We want to understand how this feature fits into development and end-user workflows. Please share your experience with us:&lt;/p&gt;&lt;div data-survey-id="2a3720b2-d4bd-4368-bcc9-262536bc9cb0" data-survey-auth-required="false"&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;p&gt;Your feedback will directly shape our future AI-powered roadmap. If you have technical questions or need assistance with the example, submit a support ticket via the &lt;a target="_blank" href="https://supportcenter.devexpress.com/ticket/list"&gt;DevExpress Support Center&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="additional-resources"&gt;Additional Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="https://github.com/DevExpress-Examples/winforms-generate-skin-palettes-with-ai"&gt;GitHub Example: AI-Powered Palette Generation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://docs.devexpress.com/WindowsForms/405151/ai-powered-extensions?v=25.2#register-ai-clients"&gt;Documentation: Register AI Clients in WinForms Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://docs.devexpress.com/WindowsForms/403968"&gt;Documentation: How To Create New and Modify Existing Vector Skin Palettes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://docs.devexpress.com/WindowsForms/2399/build-an-application/skins?v=25.2"&gt;Documentation: Application Skins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <pubDate>Tue, 17 Mar 2026 02:14:00 Z</pubDate>
      <dc:creator>Dmitry Tokmachev (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388277</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2026/02/24/winforms-june-2026-roadmap-v26-1.aspx</link>
      <category domain="https://community.devexpress.com/Tags/2026">2026</category>
      <category domain="https://community.devexpress.com/Tags/roadmap">roadmap</category>
      <category domain="https://community.devexpress.com/Tags/v26.1">v26.1</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <title>WinForms — June 2026 Roadmap (v26.1)</title>
      <description>&lt;div&gt;First and foremost – thank you for placing your trust in our component suite. We appreciate the opportunity to serve your development needs now and into the future. This blog post outlines some of our WinForms-related development plans for the second half of 2026&amp;nbsp;(v26.2).&amp;nbsp;As always, you can expect other additions across our entire range of WinForms controls and components once we officially ship v26.1.&lt;/div&gt;&lt;div&gt;We welcome your feedback - Please feel&amp;nbsp;free to&amp;nbsp;share your thoughts in the survey at the end of this post  or submit a support ticket&amp;nbsp;via the &lt;a href="https://supportcenter.devexpress.com/" target="_blank"&gt;DevExpress Support Center&lt;/a&gt;.&lt;/div&gt;&lt;div class="Note"&gt;The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This roadmap and the features/products listed within it are subject to change. You should not rely on or use this information to help make a purchase decision about Developer Express Inc products.&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&lt;h2&gt;Security&lt;/h2&gt;&lt;div&gt;Secure code starts with a safe&amp;nbsp;development environment. In addition to static code analysis and on-going security reviews, we are expanding our internal security diagnostics (including custom&amp;nbsp;analyzers)&amp;nbsp;across our engineering workflows to further strengthen our security posture.&amp;nbsp;&lt;/div&gt;&lt;div&gt;While these enhancements are not exposed as standalone features within the DevExpress component suite, they directly contribute to the&amp;nbsp;reliability of our product libraries&amp;nbsp;- a critical priority in today’s threat landscape.&lt;/div&gt;&lt;h2&gt;Fluent Icons&lt;/h2&gt;&lt;p class="tags"&gt;&lt;span class="not-started"&gt;Postponed to v26.2&lt;/span&gt;&lt;/p&gt;&lt;p&gt; We expect to introduce a comprehensive set of Fluent icons to our suite. To simplify migration to these new icons, you will be able to switch the icon set across all DevExpress controls via a single global setting.&amp;nbsp;Our new collection will include thousands of Fluent icons which can be used in any UI element with SVG support.&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/wpf/20260203-WPF-Roadmap-26_1/Fluent-Icons@2x.png" alt="" style="width:1560px;height:800px;"&gt;&lt;h2&gt;Localization Tool Enhancements&lt;/h2&gt;&lt;p&gt; &lt;/p&gt;&lt;div&gt;&lt;p&gt;In v25.2, we released a new Localization Tool as a Community Technology Preview (CTP). With v26.1, we plan to ship it officially. Our Localization Tool&amp;nbsp;will offer enhanced&amp;nbsp;collaboration capabilities, easier resource navigation and management, AI-powered translation services, support for multiple DevExpress products and platforms, and more.&lt;/p&gt;&lt;p&gt;We also expect&amp;nbsp;to add the following enhancements:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Filter localization strings based on referenced DevExpress assemblies.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Automatically load base localization resources -&amp;nbsp;you will no longer need to download them from a GitHub repository manually.&amp;nbsp;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="https://www.devexpress.com/subscriptions/i/25.2/25-2-localization-tool.png" alt="" style="width:780px;height:565px;"&gt;&lt;h2&gt;DateTimeOffset Core Support&lt;/h2&gt;&lt;p&gt;We are initiating support for DateTimeOffset across our product line. We will start with core DevExpress classes, including criteria operators and data processing modules.&lt;/p&gt;&lt;p&gt;Our goal is to eliminate manual conversion of DateTimeOffset to DateTime when working with local time zones. You will be able to specify the required time zone, and conversion to a local date will occur automatically. In this mode, users will see a simple&amp;nbsp;date/time&amp;nbsp;value&amp;nbsp;without the offset portion (as if it were a DateTime object).&lt;/p&gt;&lt;p&gt;As a first step, DateTimeOffset support will allow you to use date/time-related functions (such as AddHours, GetDays, DateDiffDays, and others) in filter expressions and unbound columns.&lt;/p&gt;&lt;div class="Note"&gt;We are &lt;strong&gt;not planning&lt;/strong&gt; DateTimeOffset-related updates for UI components as a part of v26.1. Specifically, we do not expect&amp;nbsp;to add date-specific filtering options to column filter popups or enable DateTimeOffset editing in Date Edit.&lt;br&gt;&lt;/div&gt;&lt;p&gt;DateTimeOffset offers the following advantages compared to DateTime:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Local and global time support:&lt;/strong&gt;&amp;nbsp;Suitable for usage scenarios that require both local machine time and UTC (such as logging systems).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clear semantics:&lt;/strong&gt;&amp;nbsp;The DateTime.Kind property is not serialized (which can lead to incorrect usage). DateTimeOffset always includes the offset (for example, 6/10/2025 5:30:00 PM &lt;strong&gt;-07:00&lt;/strong&gt;).&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web service compatibility:&lt;/strong&gt;&amp;nbsp;Many services return dates as DateTimeOffset. Once supported, conversion to DateTime will no longer be required.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/dotnet/standard/datetime/choosing-between-datetime#the-datetimeoffset-structure" target="_blank"&gt;Microsoft documentation&lt;/a&gt; recommends DateTimeOffset instead of DateTime when representing a single point in time, performing date/time arithmetic, and preserving related times:&lt;/p&gt;&lt;blockquote&gt;These uses for DateTimeOffset values are much more common than those for DateTime values. As a result, consider DateTimeOffset as the default date and time type for application development.&lt;/blockquote&gt;&lt;h2&gt;AI Agents API &lt;/h2&gt;&lt;div&gt;We are building an abstraction layer over multiple AI engine implementations. You&amp;#39;ll be able to use both&amp;nbsp;&lt;span&gt;IChatClient and&amp;nbsp;&lt;/span&gt;&lt;a href="https://learn.microsoft.com/en-us/agent-framework/overview/agent-framework-overview" target="_blank"&gt;Microsoft Agent Framework&lt;/a&gt;&amp;nbsp;with DevExpress&amp;nbsp;AI Chat Control.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Microsoft Agent Framework allows you to define agents with custom rules, instructions, and tools. Agents can then execute multi-step tasks based on user requests.&lt;/div&gt;&lt;h2&gt;AI Chat Enhancements&lt;/h2&gt;&lt;p&gt;We plan to introduce a set of small but useful APIs to help customize the DevExpress AI Chat Control. For example, new properties will allow you to specify the text displayed in an empty chat view and in an empty text input field.&lt;/p&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;MemoEdit — Automatic&amp;nbsp;Scrollbar&lt;/h2&gt;&lt;p&gt;The DevExpress MemoEdit control will automatically hide the scrollbar when text height does not exceed control bounds. You will be able to control this behavior via an option.&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/20260211-win-roadmap-26-1/MemoEdit-Auto-Scroll.png" alt=""&gt;&lt;h2&gt;Monaco-Based Code Editor (Example)&lt;/h2&gt;&lt;div&gt;As you may know, &lt;a href="https://github.com/microsoft/monaco-editor" target="_blank"&gt;Monaco Code Editor&lt;/a&gt; is an&amp;nbsp;open-source editor used in Visual Studio Code. It includes IntelliSense, supports multiple built-in languages, allows you to define custom syntax, and more.&lt;/div&gt;&lt;div&gt;We will create a comprehensive example of Monaco Editor integrated into a WinForms application with DevExpress Skins. The example will mirror the most important web APIs at the C# level, so you won&amp;#39;t need to use JavaScript for common usage scenarios.&lt;/div&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/20260211-win-roadmap-26-1/Monaco-Editor_.png" alt=""&gt;&lt;h2&gt;Spreadsheet — New Excel Functions&lt;/h2&gt;&lt;div&gt;We will enhance our Spreadsheet calculation engine by adding support for modern, dynamic array-based Excel functions, including functions like:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;XLOOKUP&lt;/li&gt;&lt;li&gt;XMATCH&lt;/li&gt;&lt;li&gt;SORT&lt;/li&gt;&lt;li&gt;FILTER&lt;/li&gt;&lt;li&gt;UNIQUE&lt;/li&gt;&lt;/ul&gt;&lt;h2 id="reporting"&gt;Reporting&lt;/h2&gt;&lt;h3 id="accessibility--export-compliance"&gt;Accessibility &amp;amp; Export Compliance&lt;/h3&gt;&lt;h4 id="docxhtml-export--accessibledescription-support"&gt;DOCX/HTML Export — AccessibleDescription Support&lt;/h4&gt;&lt;p&gt;Organizations subject to WCAG 2.2 and Section 508 requirements will be able to include meaningful alternative text for all embedded images and graphical elements in exported Word documents and HTML pages. With v26.1, DevExpress Reports will apply a report control&amp;#39;s&amp;nbsp;&lt;code&gt;AccessibleDescription&lt;/code&gt;&amp;nbsp;property value to DOCX and HTML export output. This capability is especially relevant for controls exported as images, such as&amp;nbsp;&lt;strong&gt;XRPictureBox&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;XRBarCode&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;XRShape&lt;/strong&gt;, and&amp;nbsp;&lt;strong&gt;XRChart&lt;/strong&gt;, where assistive technologies rely on alternative text to describe visual content.&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/reporting/2026/roadmap/reporting-v26.1-roadmap-docx-accessibility-callout.png" alt="DOCX Export — AccessibleDescription Support" style="width:1560px;height:900px;"&gt;&lt;/p&gt;&lt;h4 id="pdfua-export-enhancements"&gt;PDF/UA Export Enhancements&lt;/h4&gt;&lt;p&gt;Government agencies and enterprises that must comply with PDF/UA standards will benefit from extended PDF export capabilities in v26.1:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;XRRichText&lt;/strong&gt;&amp;nbsp;content will use proper semantic tagging and group continuous text into logical paragraphs instead of word-by-word&amp;nbsp;&lt;code&gt;&amp;lt;P&amp;gt;&lt;/code&gt;&amp;nbsp;tags.&lt;/li&gt;&lt;li&gt;The&amp;nbsp;&lt;code&gt;AccessibleDescription&lt;/code&gt;&amp;nbsp;property will apply to PDF signatures and AcroForm controls so that digitally signed or form-enabled PDF documents meet accessibility requirements.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;XRPageInfo&lt;/strong&gt;&amp;nbsp;controls will support paragraph-level semantic markup.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id="data-source-enhancements"&gt;Data Source Enhancements&lt;/h3&gt;&lt;h4 id="datetimeoffset-support"&gt;DateTimeOffset Support&lt;/h4&gt;&lt;p&gt;Applications that store time zone-aware timestamps (such as financial transaction logs, audit trails, and event scheduling systems) require&amp;nbsp;&lt;code&gt;DateTimeOffset&lt;/code&gt;&amp;nbsp;support to preserve the original offset for accurate data representation. With v26.1, our Report Designer&amp;#39;s&amp;nbsp;&lt;strong&gt;Field List&lt;/strong&gt;&amp;nbsp;will display&amp;nbsp;&lt;code&gt;DateTimeOffset&lt;/code&gt;&amp;nbsp;fields and allow data binding, filter, group, and sort operations across&amp;nbsp;&lt;strong&gt;SqlDataSource&lt;/strong&gt;,&amp;nbsp;&lt;strong&gt;EFDataSource,&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;ObjectDataSource&lt;/strong&gt;.&lt;/p&gt;&lt;h3 id="end-user-experience"&gt;End-User Experience&lt;/h3&gt;&lt;h4 id="winforms-end-user-report-designer--startup-optimization"&gt;WinForms End-User Report Designer — Startup Optimization&lt;/h4&gt;&lt;p&gt;We will optimize the DevExpress&amp;nbsp;&lt;strong&gt;WinForms End-User Report Designer&amp;#39;s&amp;nbsp;&lt;/strong&gt;startup sequence to deliver a smoother and more responsive launch experience. Dock panels and UI elements will appear quickly on initial load, and transitions between the Design and Preview tabs will be rendered seamlessly.&lt;/p&gt;&lt;h4 id="xrlabel--xrpanel--custom-border-styles-example"&gt;XRLabel &amp;amp; XRPanel — Custom Border Styles Example&lt;/h4&gt;&lt;p&gt;Invoice layouts, financial statements, and reports with visually distinct section separators often require independent border configuration per side. We will extend the&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/Reporting-Custom-Controls"&gt;How to Create a Custom DevExpress Report Control&lt;/a&gt;&amp;nbsp;GitHub repository with a new example that demonstrates custom&amp;nbsp;&lt;strong&gt;XRLabel&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;XRPanel&lt;/strong&gt;&amp;nbsp;controls. These custom controls will allow you to define distinct border styles and width&amp;nbsp;for top, bottom, left, and right sides independently.&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/reporting/2026/roadmap/reporting-v26.1-roadmap-different-borders-invoice-header@2x.png" alt="Invoice Header — Different border styles for panels" style="width:1538px;height:506px;"&gt;&lt;/p&gt;&lt;h3 id="ide-integration"&gt;IDE Integration&lt;/h3&gt;&lt;h4 id="devexpress-report-designer-for-jetbrains-rider--net-projects-support"&gt;DevExpress Report Designer for JetBrains Rider — .NET Projects Support&lt;/h4&gt;&lt;p&gt;In v25.2, we introduced the DevExpress Report Designer for JetBrains Rider with .NET Framework support. In v26.1, we will extend this integration to .NET-based projects. We also expect to deliver property search and reset in the Properties panel and light/dark theme support to match the JetBrains Rider IDE.&lt;/p&gt;&lt;img src="https://www.devexpress.com/subscriptions/i/25.2/25-2-report-designer-jb-rider@2x.png" alt="DevExpress Report Designer for JetBrains Rider — .NET Projects Support"&gt;&lt;h3 id="ai-powered-enhancements"&gt;AI-powered Enhancements&lt;/h3&gt;&lt;h4 id="ai-prompt-to-report-wizard--optimization"&gt;AI Prompt-to-Report Wizard — Optimization&lt;/h4&gt;&lt;p&gt;We will optimize the&amp;nbsp;&lt;strong&gt;AI Prompt-to-Report Wizard&lt;/strong&gt;&amp;nbsp;to allow users&amp;nbsp;to input shorter prompts and achieve more consistent, production-ready report output. The updated implementation will use a multi-agent workflow and will also reduce token consumption per report generation request.&lt;img src="https://community.devexpress.com/blogs/reporting/2026/roadmap/reporting-v26.1-roadmap-agentic-workflow@2x.png" alt="AI Prompt-to-Report Wizard —Multi-Agentic Workflow" style="width:1560px;height:900px;"&gt;&lt;/p&gt;&lt;h4 id="web-and-wpf-report-designer--ai-powered-chat-assistant"&gt;Report Designer — AI-powered Chat Assistant&lt;/h4&gt;&lt;p id="web-and-wpf-report-designer--ai-powered-chat-assistant"&gt;Our&amp;nbsp;&lt;strong&gt;DevExpress WinForms End-User Report Designer&lt;/strong&gt;&amp;nbsp;includes an&amp;nbsp;&lt;a href="https://docs.devexpress.com/XtraReports/405498/ai-powered-functionality/desktop-reporting/modify-report-in-win-report-designer" target="_blank" title="Modify Report Behavior in the WinForms Report Designer (CTP)"&gt;AI Assistant panel&lt;/a&gt;&amp;nbsp;that allows users to add, remove, and modify report elements, properties, and data bindings using natural language commands. In v26.1, we will extend this capability to our&amp;nbsp;&lt;strong&gt;Web&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;WPF Report Designer&lt;/strong&gt;&amp;nbsp;components and add the following features:&lt;/p&gt;&lt;span&gt;&lt;ul&gt;&lt;li&gt;Built-in tools that enable AI to search relevant end-user documentation&lt;/li&gt;&lt;li&gt;Wizards that can be launched via AI commands&lt;/li&gt;&lt;li&gt;Enhanced interaction with the designer environment&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Stay tuned for updates as development continues.&lt;/p&gt;&lt;/span&gt;&lt;h4 id="agentsmd-for-ai-coding-assistants"&gt;AGENTS.md for AI Coding Assistants&lt;/h4&gt;&lt;p&gt;Developers who use AI-powered code completion tools will obtain more accurate and context-aware suggestions when they work with DevExpress Reports. We will create an AGENTS.md file that equips AI coding assistants, such as GitHub Copilot and Cursor, with DevExpress Reports expertise. The file will contain API patterns, expression syntax rules, common report creation scenarios, troubleshooting guides, and best practices.&lt;/p&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;div data-survey-id="a6b6eba5-cdaf-40a1-82a2-a428a21155e2" data-survey-auth-required="false"&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 24 Feb 2026 04:00:00 Z</pubDate>
      <dc:creator>Alexander Russkov (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388258</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2025/08/12/winforms-year-end-roadmap-v25-2.aspx</link>
      <category domain="https://community.devexpress.com/Tags/.NET+10">.NET 10</category>
      <category domain="https://community.devexpress.com/Tags/2025">2025</category>
      <category domain="https://community.devexpress.com/Tags/accessibility">accessibility</category>
      <category domain="https://community.devexpress.com/Tags/ai">ai</category>
      <category domain="https://community.devexpress.com/Tags/roadmap">roadmap</category>
      <category domain="https://community.devexpress.com/Tags/v25.2">v25.2</category>
      <title>WinForms — Year-End Roadmap (v25.2)</title>
      <description>&lt;p&gt;This post details WinForms-related&amp;nbsp;features/capabilities we expect to introduce in our year-end update (v25.2). If you have questions or suggestions, feel free to submit your thoughts in the survey at the end of this post or submit a ticket via the DevExpress Support Center&amp;nbsp;- your feedback is always welcome.&lt;/p&gt;&lt;div&gt;&lt;div class="Note"&gt;The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This roadmap and the features/products listed within it are subject to change. You should not rely on or use this information to help make a purchase decision about Developer Express Inc products.&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;.NET 10 Support&lt;/h2&gt;&lt;p&gt;All our WinForms controls will support .NET 10 as soon as it becomes available this November. We&amp;#39;re&amp;nbsp;already testing preview versions to ensure seamless migration. If you&amp;#39;re wondering what enhancements .NET 10 brings to the platform itself, be sure to check the following Microsoft help topic: &lt;a href="https://learn.microsoft.com/en-us/dotnet/desktop/winforms/whats-new/net100" target="_blank"&gt;What&amp;#39;s new in Windows Forms for .NET 10 Preview&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;DevExpress MCP Server for AI-Powered Documentation Access&lt;/h2&gt;
&lt;p class="tags"&gt;
    &lt;span class="completed"&gt;&lt;a target="_blank" href="https://docs.devexpress.com/GeneralInformation/405551/help-resources/dev-express-documentation-mcp-server-configure-an-ai-powered-assistant"&gt;Available in Preview&lt;/a&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;We will introduce an MCP server that connects GitHub Copilot Chat, Cursor, and other MCP-compatible AI tools directly to our comprehensive documentation database. The server will provide instant access to over 300,000 help topics through natural language queries within your IDE. This will allow you and AI coding agents such as Claude Code to access current DevExpress documentation directly within the AI assistant&amp;#39;s context.&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/20251008-Win-Roadmap-252/dx-mcp-docs-assistant.png" alt="" style="width:862px;height:391px;"&gt;&lt;h2&gt;AI Chat Control&lt;/h2&gt;&lt;h3&gt;Tool Calling API&lt;/h3&gt;&lt;div&gt;Our new API will allow you to create tools that execute any custom commands (apply filters to Grids, modify Chart UIs, query databases, or perform business actions). With these tools, end users will be able to interact with your DevExpress-powered application directly from AI Chat using natural language.&lt;/div&gt;&lt;h3&gt;Visual Tool Execution Indicators&lt;/h3&gt;&lt;p&gt;Our Chat Control will provide clear visual indicators when executing AI tools, whether declared locally within your application or connected via MCP (Model Context Protocol) servers. These indicators will enhance transparency and help users understand which actions are being performed in real-time.&lt;/p&gt;&lt;h3&gt;Resources&lt;/h3&gt;&lt;div&gt;v25.2 will introduce a resources feature designed to attach additional context to chat messages within our Blazor AI Chat control. Unlike simple file attachments, resources can include various context types supplied by your application (binary files including audio, images and PDFs, database schemas, records, logs, and more). Users can view available resources directly in the chat input field and attach them to enhance AI interactions.&lt;/div&gt;&lt;h3&gt;RAG Project Template&lt;/h3&gt;&lt;div&gt;We will create a new project template based on our AI Chat Control and powered by Retrieval-Augmented Generation (RAG). This template will help you to extract information from documents and allow an AI assistant to answer questions based on your data. It will leverage our AI Chat Control to deliver a conversational UI, and Office File API to pull data from PDF and Word documents.&lt;/div&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/wpf/20250807-WPF-Roadmap-252/AI-Chat-RAG-Template_.png" alt="" style="width:1380px;height:861px;"&gt;&lt;/p&gt;&lt;h2&gt;AI-Powered Expression&amp;nbsp;Generation&lt;/h2&gt;&lt;div&gt;&lt;div&gt;We’re adding AI-powered expression generation to our WinForms controls to help users create complex expressions using natural language prompts. Generated expressions will be automatically validated before being applied to the target control. This capability will be available for:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Filter expressions&lt;/li&gt;&lt;li&gt;Unbound expressions&lt;/li&gt;&lt;li&gt;Conditional Formatting rules&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/20251008-Win-Roadmap-252/AI-filter-expressions.png" alt=""&gt;&lt;h2&gt;Rider Support&lt;/h2&gt;&lt;h3&gt;Designer&lt;/h3&gt;&lt;p&gt;We’re &lt;span&gt;in close collaboration&lt;/span&gt; with the JetBrains team to enhance design-time support for DevExpress WinForms components in the Rider IDE. You’ll soon be able to use the design-time capabilities of all major DevExpress WinForms controls. Many of these improvements will roll out in Rider EAP releases (available every couple of weeks). We’ll share updates once core functionality is in place -&amp;nbsp;stay tuned.&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/20251008-Win-Roadmap-252/Rider-DevExpress-WinForms.png" alt=""&gt;&lt;h3&gt;DevExpress Template Kit&lt;/h3&gt;&lt;p&gt;DevExpress Template Kit includes dozens of project templates and building blocks available in Visual Studio and VS Code. With v25.2, you&amp;#39;ll be able to use these templates&amp;nbsp;within JetBrains Rider.&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/wpf/20250807-WPF-Roadmap-252/rider-kit.png" alt=""&gt;&lt;h2&gt;Charts — DateOnly &amp;amp; TimeOnly Support&lt;/h2&gt;&lt;div&gt;In v25.2, our DevExpress Charts will introduce full DateOnly and TimeOnly support. With this enhancements, you&amp;#39;ll be able to:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Bind chart data directly to DateOnly/TimeOnly values&lt;/li&gt;&lt;li&gt;Format axes with date/time options&lt;/li&gt;&lt;li&gt;Aggregate data by date or time intervals&lt;/li&gt;&lt;/ul&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/20251008-Win-Roadmap-252/chart-dateonly_.png" alt="" style="width:904px;height:506px;"&gt;&lt;h2&gt;Data Grid —&amp;nbsp;Column Header Navigation&lt;/h2&gt;&lt;div&gt;With our next release, users will be able to&amp;nbsp;focus column headers in the DevExpress WinForms&amp;nbsp;Data Grid and execute the following actions:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Apply sort operations (Space/Enter)&lt;/li&gt;&lt;li&gt;Sort against multiple columns (Shift + Space)&lt;/li&gt;&lt;li&gt;Clear sorting (Ctrl + Space)&lt;/li&gt;&lt;li&gt;Display the Column Filter Popup (Alt + Down)&lt;/li&gt;&lt;li&gt;Reorder columns (Ctrl + Left/Right)&lt;/li&gt;&lt;li&gt;Display the Column Context Menu (Shift+F10)&lt;/li&gt;&lt;li&gt;Resize a column (Shift + Left/Right)&lt;/li&gt;&lt;/ul&gt;&lt;img src="https://www.devexpress.com/subscriptions/i/24.2/24-2-wpf-grid-header-navigation.gif" alt="" style="width:836px;height:466px;"&gt;&lt;h2&gt;Data Grid —&amp;nbsp;Multi-Cell Editing&lt;/h2&gt;&lt;p&gt;As you know, Microsoft Excel allows you to select multiple cells and apply text changes by pressing Ctrl + Enter (instead of Enter). We will add a similar feature to our WinForms Data Grid, allowing users to apply identical values to multiple cells simultaneously.&lt;/p&gt;&lt;img src="https://www.devexpress.com/subscriptions/i/24.2/24-2-wpf-grid-multi-cell-editing.gif" alt="" style="width:940px;height:516px;"&gt;&lt;h2&gt;Editors — Screen Reader Enhancements&lt;/h2&gt;&lt;p&gt;Though our WinForms Editors already announce values when users focus editors or enter text, we expect to extend support for screen readers for the following usage scenarios:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Partial text selection&lt;/li&gt;&lt;li&gt;Character deletion&lt;/li&gt;&lt;li&gt;Previous/next&amp;nbsp;character navigation&lt;/li&gt;&lt;/ul&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/20251008-Win-Roadmap-252/a11y-winforms-editors.png" alt=""&gt;&lt;h2&gt;Ribbon Control —&amp;nbsp;Right Pane&lt;/h2&gt;&lt;p&gt;You’ll be able to position vertical panels on the right side of the DevExpress WinForms Ribbon Control. This space can host application-wide features, such as an AI Chat interface or Outlook-style notifications.&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/20251008-Win-Roadmap-252/WinForms-Ribbon-Right-Panel.png" alt="" style="width:1094px;height:643px;"&gt;&lt;h2&gt;Rich Text Editor&lt;/h2&gt;&lt;h3&gt;Word to PDF/UA Conversion&lt;/h3&gt;&lt;div&gt;With our year-end-release, DevExpress Word-processing tools will automatically add accessible tags for PDF form fields when users export Word documents with Content Controls to the PDF/UA format.&lt;/div&gt;&lt;h3&gt;Enhanced Master-Detail Mail Merge&lt;/h3&gt;&lt;div&gt;We will extend our Word Processing API with support for mail merge operations based on hierarchical (master-detail) data sources. This feature will allow developers to bind nested collections directly to Word templates using standard merge field syntax. With this enhancement, you will be able to:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Define repeatable detail sections using region-based merge fields.&lt;/li&gt;&lt;li&gt;Use a single template to generate multi-level reports, invoices, or personalized documents.&lt;/li&gt;&lt;li&gt;Perform complex document generation from hierarchical business objects (for example, Customer → Orders, Order → Items).&lt;/li&gt;&lt;li&gt;Integrate with custom data sources.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Spreadsheet Editor&lt;/h2&gt;&lt;h3&gt;Excel to PDF/UA Conversion&lt;/h3&gt;&lt;p&gt;We’ll enhance our Excel to PDF/UA conversion engine to address accessibility issues related to graphical object tagging and artifact generation (for decorative content).&lt;/p&gt;&lt;h3&gt;OLE Object Support Enhancements&lt;/h3&gt;&lt;div&gt;Our next release will allow you to manage OLE Objects (load, modify, and save) in binary file formats:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;XLS&lt;/li&gt;&lt;li&gt;XLSB&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;New Excel Functions&lt;/h3&gt;&lt;div&gt;We will enhance our Spreadsheet calculation engine by adding support for modern, dynamic array-based Excel functions, including&amp;nbsp;functions such as:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;XLOOKUP&lt;/li&gt;&lt;li&gt;XMATCH&lt;/li&gt;&lt;li&gt;FILTER&lt;/li&gt;&lt;li&gt;UNIQUE&lt;/li&gt;&lt;li&gt;And more&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Reports&lt;/h2&gt;&lt;h3&gt;Enhanced PDF Export — Accessibility Enhancements&lt;/h3&gt;&lt;p&gt;We will extend DevExpress Reports APIs and give you&amp;nbsp;granular control over PDF accessibility features. This enhancement allows developers to specify PDF layout artifacts — elements skipped by assistive technologies — and define alternative text for report watermarks.&lt;/p&gt;&lt;h3&gt;Enhanced DOCX Export&amp;nbsp;— Accessibility Enhancements&amp;nbsp;&lt;/h3&gt;&lt;p&gt;A Report control&amp;#39;s &lt;code class="language-csharp"&gt;AccessibleDescription&lt;/code&gt; property will be available when exporting reports to DOCX files.&lt;/p&gt;&lt;h3&gt;Report Design Analyzer — Accessibility Checker&lt;/h3&gt;&lt;p&gt;&lt;span&gt;We will extend the Report Design Analyzer pane with a new &amp;quot;Accessibility&amp;quot; error source category to help report designers create accessible documents across multiple Microsoft Office/PDF export formats. This feature mirrors accessibility assistant functionality found in Microsoft Office products and&amp;nbsp;provides&amp;nbsp;proactive guidance during the design phase. As you would expect, this capability will dramatically improve accessibility compliance while reducing the learning curve for developers new to accessibility standards. This feature will also:&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Enable report designers to identify and fix accessibility issues before export&lt;/li&gt;&lt;li&gt;Reduce accessibility violations in exported documents&lt;/li&gt;&lt;li&gt;Provide clear, actionable guidance for accessibility improvements&lt;/li&gt;&lt;li&gt;Support multiple export formats with format-specific checks&lt;/li&gt;&lt;/ul&gt;&lt;img src="https://community.devexpress.com/blogs/reporting/2025/v25-2-roadmap/devexpress-reporting-accessibility-checker-25.2-roadmap.png" alt=""&gt;&lt;h3&gt;DevExpress Report Designer for JetBrains Rider&lt;/h3&gt;&lt;div&gt;&lt;p&gt;&lt;span&gt;Responding to community demand and the growing popularity of JetBrains Rider, we will integrate the DevExpress Visual Studio Report Designer with JetBrains Rider. This IDE integration will allow developers to create,&amp;nbsp;modify, and manage DevExpress Reports directly within their preferred IDE environment,&amp;nbsp;eliminating&amp;nbsp;the need to switch between development tools.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/reporting/2025/v25-2-roadmap/devexpress-reporting-rider-report-designer-25.2-roadmap-1.png" alt=""&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/reporting/2025/v25-2-roadmap/devexpress-reporting-rider-report-designer-25.2-roadmap.png" alt=""&gt;&lt;br&gt;&lt;/p&gt;&lt;h3&gt;&lt;span&gt;AI-Powered Enhancements&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span&gt;With v25.2, we plan to deliver AI-powered feature parity across DevExpress Report Designer components across supported platforms, including our Visual Studio Report Designer. No matter which platform or IDE you use, you’ll benefit from the same AI-powered tools that accelerate report design and reduce manual effort.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/reporting/2025/v25-2-roadmap/devexpress-reporting-vs-wizard-ai-25.2-roadmap.png" alt=""&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;For a detailed overview of AI-powered capabilities in DevExpress Reports, refer to the following topic:&amp;nbsp;&lt;a href="https://docs.devexpress.com/XtraReports/405211/ai-powered-functionality/ai-for-devexpress-reporting" target="_blank"&gt;AI-powered Functionality&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;&lt;span&gt;End-User Report Designer — Settings Window&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;We plan to add a new dialog window to our WinForms End-User Report Designer that allows users to configure report design/document generation settings globally at the application level:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Default settings for new reports. Users can modify report settings to match preferences.&lt;/li&gt;&lt;li&gt;Centralized dock panel management. Users can control the state of multiple panels simultaneously (instead of one-by-one via the toolbar).&lt;/li&gt;&lt;li&gt;Unified access to designer settings. Users can customize layout, data, and appearance from a single location.&lt;/li&gt;&lt;/ul&gt;&lt;img src="https://community.devexpress.com/blogs/reporting/2025/v25-2-roadmap/devexpress-reporting-designer-settings-window-25.2-roadmap.png" alt="" style="width:1110px;height:764px;"&gt;&lt;h2&gt;&lt;span&gt;DevExpress Report Designer Data Source Wizard — Pinned Data Sources&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span&gt;We will enhance the &amp;quot;Choose a data source&amp;quot; page in our Data Source Wizard to allow users to pin frequently used database providers as favorites. These favorite providers will be displayed at the top of the list for quick access.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;img src="https://community.devexpress.com/blogs/reporting/2025/v25-2-roadmap/devexpress-reporting-wizard-pinned-items-25.2-roadmap.png" alt=""&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;Time Zone Conversion&lt;/h3&gt;&lt;p&gt;With v25.2, DevExpress Reports will convert UTC date/time values to the viewer&amp;#39;s local time zone. This feature is essential for applications with a global user base, as it ensures that all users analyze report data in their respective local time zones.&lt;/p&gt;&lt;h2 id="feedback"&gt;Your Feedback Counts&lt;/h2&gt;&lt;p&gt;If you have a specific question about our WinForms&amp;nbsp;roadmap, feel free to submit a support ticket via the DevExpress&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/list" target="_blank"&gt;Support Center&lt;/a&gt;. We will be happy to follow-up.&lt;/p&gt;&lt;/div&gt;&lt;div data-survey-id="2a0c05a9-9f83-4645-a658-ac99c8f651f8" data-survey-auth-required="false"&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 12 Aug 2025 06:50:00 Z</pubDate>
      <dc:creator>Alexander Russkov (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388234</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2025/04/02/winforms-early-access-preview-v25-1.aspx</link>
      <category domain="https://community.devexpress.com/Tags/2025">2025</category>
      <category domain="https://community.devexpress.com/Tags/ai">ai</category>
      <category domain="https://community.devexpress.com/Tags/eap">eap</category>
      <category domain="https://community.devexpress.com/Tags/Grid+Control">Grid Control</category>
      <category domain="https://community.devexpress.com/Tags/prerelease">prerelease</category>
      <category domain="https://community.devexpress.com/Tags/roadmap">roadmap</category>
      <category domain="https://community.devexpress.com/Tags/v25.1">v25.1</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <title>WinForms — Early Access Preview (v25.1)</title>
      <description>&lt;p&gt;Our next major update (v25.1) is a couple of months away. As such, we wanted to preview a few features/capabilities we expect to ship this spring and invite all active &lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;DevExpress Universal&lt;/a&gt; or &lt;a href="https://www.devexpress.com/subscriptions/dxperience.xml" target="_blank"&gt;DXperience&lt;/a&gt; subscriber to download and install our Early Access Preview (EAP) today (visit the &lt;a href="https://www.devexpress.com/ClientCenter/DownloadManager/"&gt;DevExpress Download Manager&lt;/a&gt; to obtain the EAP build). As you will see below, new desktop development standards (.NET Core, AI, Accessibility) remain key focus areas.&lt;/p&gt;


&lt;div class="Note"&gt;
    &lt;p&gt;Early Access and CTP builds are provided solely for early testing purposes and are not ready for production use. This build can be installed side by side with other major versions of DevExpress products. Please backup your project and other important data before installing Early Access and CTP builds.&lt;/p&gt;
    &lt;p&gt;
        This &lt;strong&gt;EAP &lt;/strong&gt;&lt;strong&gt;may not include all features/products we expect to ship&lt;/strong&gt; in our v25.1 release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months. &lt;strong&gt;For &lt;/strong&gt;&lt;strong&gt;additional information&lt;/strong&gt; on what you can expect, refer to our &lt;a href="https://community.devexpress.com/Blogs/winforms/archive/2025/02/18/winforms-june-2025-roadmap-v25-1-.aspx" target="_blank"&gt;June 2025 Roadmap&lt;/a&gt;.
    &lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;AI–driven Semantic Search within the WinForms Data Grid&lt;/h2&gt;

&lt;p&gt;Our WinForms Data Grid will ship with an&amp;nbsp;enhanced search experience and allow&amp;nbsp;users to locate relevant data within large datasets faster/more accurately. The Data Grid utilizes Natural Language Processing (NLP) to analyze search queries beyond exact keyword matching. By interpreting synonyms and contextual meaning, the DevExpress Data Grid will deliver more precise search results.&lt;/p&gt;

&lt;p&gt;
    Once AI-driven semantic search is enabled, a dropdown button appears within the search box. The&amp;nbsp;popup menu allows users to specify search mode: standard, semantic, or hybrid (a combination of standard and semantic search).
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/25-1-winforms-grid-semantic-search-devexpress.gif" alt="AI–Driven Semantic Search in the WinForms Data Grid, DevExpress" style="width:770px;height:346px;"&gt;

&lt;p&gt;
    You can use semantic search in either &amp;#39;Filter&amp;#39; or &amp;#39;Search&amp;#39; mode. In &amp;#39;Search&amp;#39; mode, the grid highlights relevant data rows for more flexible/intuitive data discovery:
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/25-1-winforms-grid-semantic-search-hybrid.png" alt="AI–Driven Semantic Search in the WinForms Data Grid - Search Mode, DevExpress" width="735px"&gt;

&lt;p&gt;
    Semantic search requires use of additional DevExpress NuGet packages:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;DevExpress.AIIntegration.SemanticSearch&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;DevExpress.AIIntegration.WinForms.SemanticSearch&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To enable AI–powered semantic search within the WinForms Data Grid, you must register an embedding generator, supply a vector storage/database, connect our new &lt;code&gt;SemanticSearchBehavior&lt;/code&gt; to the grid, and configure behavior settings (such as, an embedding generator, vector store, record type in a vector&amp;nbsp;store, data source key field, search mode, search accuracy, the maximum number of results, etc.):&lt;/p&gt;
    
&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/winforms-semantic-search-behavior-settings.png" alt="WinForms Semantic Search Behavior Settings, DevExpress" class="small" style="width:661px;height:438px;"&gt;

&lt;p&gt;
    The following code snippet initializes vectors. It creates an in-memory vector store to store vectorized records (for demo purposes). Production AI applications use vector databases and services to improve relevancy. You can use any vector store that implements the &lt;code&gt;IVectorStore&lt;/code&gt; interface to store embeddings. Refer to the following topic for additional information: &lt;a href="https://learn.microsoft.com/en-us/dotnet/ai/conceptual/vector-databases#available-vector-database-solutions" target="_blank"&gt;Available vector database solutions&lt;/a&gt;.
&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;
async void Form1_Shown(object sender, EventArgs e) {
    try {
        await Initialize();
    }
    catch(Exception ex) {
        MessageBox.Show(ex.ToString());
    }
}

// Define a record stored in the vector store for semantic search
class VectorStoreRecord {
    // A unique identifier for the record in a vector store
    [VectorStoreRecordKey]
    public string Key { get; set; }

    // Text content associated with the record
    [VectorStoreRecordData]
    public string ItemDescription { get; set; }

    // Numerical vector representation of the record
    // Specifies how vector data is stored and compared in a vector store
    // Ollama produces 768-dimensional vectors 
    [VectorStoreRecordVector(768, DistanceFunction.CosineSimilarity)]
    public ReadOnlyMemory&amp;lt;float&amp;gt; Vector { get; set; }
}

async Task Initialize() {
    // Initialize an embedding generator to convert text into numerical vectors
    // This example uses the Ollama embedding generator.
    var embeddingGenerator = new OllamaEmbeddingGenerator(new Uri(&amp;quot;http://localhost:11434/&amp;quot;), &amp;quot;nomic-embed-text&amp;quot;);
    
    /* The following code uses an Azure OpenAI embedding model.
    *  You can use the &amp;#39;text-embedding-3-small&amp;#39; model that produces 1536-dimensional vectors.
    *  Modify the &amp;#39;VectorStoreRecordVector&amp;#39; attribute for the &amp;#39;VectorStoreRecord.Vector&amp;#39;.
    * var embeddingGenerator = new AzureOpenAIClient(
    *     new Uri(AzureOpenAIEndPoint),
    *     new AzureKeyCredential(AzureOpenAIKey))
    *     .AsEmbeddingGenerator(ModelId);
    */

    // Create an in-memory vector store to store vectorized records
    var vectorStore = new InMemoryVectorStore();

    // Retrieve the default AI container
    var container = AIExtensionsContainerDesktop.Default;
    
    // Register the embedding generator in the AI container
    container.AddEmbeddingGenerator(embeddingGenerator);

    // Register the vector store in the AI container
    container.AddVectorStore(vectorStore);

    // Create and populate the vector store with vectorized data items
    await container.CreateVectorStoreCollectionAsync&amp;lt;DataItem, VectorStoreRecord&amp;gt;(
        // Retrieve all items to be indexed
        dataSource: DataItem.GetAllItems(),
        // Specify the collection name in the vector store
        vectorStoreCollectionName: &amp;quot;DataItems&amp;quot;,
        // Extract the text content from each item to be transformed into a vector
        vectorizableContentGetter: item =&amp;gt; item.Name + &amp;quot; - &amp;quot; + item.Description);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;JSON Serialization&lt;/h2&gt;

&lt;p&gt;DevExpress WinForms UI controls now support JSON-based layout serialization - an alternative to XML for simplified integration with modern web and AI services. With v25.1, a new &lt;code&gt;SaveLayoutToJson(Stream)&lt;/code&gt; method allows you to save and restore control layout&amp;nbsp;in JSON format.&lt;/p&gt;

&lt;p&gt;JSON serialization is available for projects targeting .NET 8+ and .NET Framework 4.6.2+.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp" data-line="5,11"&gt;string filePath = &amp;quot;gridlayout.json&amp;quot;;
void Form1_Load(object sender, EventArgs e) {
    if (File.Exists(filePath)) {
        using (var jsonStream = File.OpenRead(filePath))
            gridView.RestoreLayoutFromJson(jsonStream);
    }
}

void Form1_FormClosing(object sender, FormClosingEventArgs e) {
    using (var jsonStream = File.OpenWrite(filePath))
        gridView.SaveLayoutToJson(jsonStream);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Enhancements in WinForms Grid–based Controls&lt;/h2&gt;
&lt;h3&gt;ItemsView – Data Validation&lt;/h3&gt;

&lt;p&gt;This EAP includes new &lt;code&gt;ValidateRow&lt;/code&gt; and &lt;code&gt;BeforeLeaveRow&lt;/code&gt; events in the ItemsView.&lt;/p&gt;

&lt;h3&gt;Adjust Horizontal Scrolling on Touchpad&lt;/h3&gt;

&lt;p&gt;DevExpress grid–based controls (such as GridControl, TreeList, Gantt Control, and VGridControl) support smooth scrolling with a touchpad. However, some users may experience inverted horizontal scrolling behavior when using a touchpad on Windows devices.&lt;/p&gt;

&lt;p&gt;v25.1 introduces a new &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraEditors.WindowsFormsSettings.InvertHorizontalScrolling?v=25.1"&gt;InvertHorizontalScrolling&lt;/a&gt;&amp;nbsp;option that reverses current horizontal scrolling direction in our WinForms grid-based controls when using the touchpad.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp" data-line="4"&gt;static void Main() {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    WindowsFormsSettings.InvertHorizontalScrolling = DefaultBoolean.True;
    Application.Run(new Form1());
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;WinForms Data Editors&lt;/h2&gt;
&lt;h3&gt;WinForms Step Progress Bar - UX Enhancements&lt;/h3&gt;

&lt;p&gt;We improved the user experience for step–based navigation workflows. With v25.1, users can interact with StepProgressBar items as follows:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Click an item to select it.&lt;/li&gt;
    &lt;li&gt;Use arrow keys to move focus between items.&lt;/li&gt;
    &lt;li&gt;Press &lt;strong&gt;Enter&lt;/strong&gt; or &lt;strong&gt;Space&lt;/strong&gt; to select an item.&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/winforms-step-progress-bar-devexpress.gif" class="small" style="width:368px;" alt="WinForms Step Progress Bar - UX Enhancements, DevExpress"&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/25-1-winforms-step-progress-bar-user-interaction.png" class="small" style="width:424px;" alt="WinForms Step Progress Bar - Keyboard Accessibility, DevExpress"&gt;

&lt;p&gt;New StepProgressBar APIs include:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraEditors.StepProgressBar.AllowUserInteraction?v=25.1"&gt;StepProgressBar.AllowUserInteraction&lt;/a&gt;: Specifies whether users&amp;nbsp;can interact with items.&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraEditors.StepProgressBarItem.AllowUserInteraction?v=25.1"&gt;StepProgressBarItem.AllowUserInteraction&lt;/a&gt;: Prevents user interaction with a specific item.&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraEditors.StepProgressBar.ItemClick?v=25.1"&gt;StepProgressBar.ItemClick&lt;/a&gt;: Occurs when a user clicks an item in the StepProgressBar and allows you to cancel selection.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code class="language-csharp" data-line="1"&gt;stepProgressBar1.AllowUserInteraction = true;
// ...
void StepProgressBar1_ItemClick(object sender, StepProgressBarItemClickEventArgs e) {
    if (IsDataSaved(e.Item)) return;
    if (XtraMessageBox.Show(&amp;quot;You have unsaved changes. Would you like to save them?&amp;quot;, &amp;quot;Warning&amp;quot;, MessageBoxButtons.YesNo) == DialogResult.Yes)
        e.Handled = true;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;WinForms SearchLookUpEdit - Synchronized Find Panel Text&lt;/h3&gt;

&lt;p&gt;Our WinForms SearchLookUpEdit allows users to specify find panel text for the popup View, ensuring synchronization with the &lt;code&gt;FindFilterText&lt;/code&gt; property. Previously, modifying the&amp;nbsp;&lt;code&gt;PopupView.FindFilterText&lt;/code&gt;&amp;nbsp;property did not update the find panel&amp;#39;s textbox, leading to inconsistencies in search behavior. This enhancement ensures that the find panel displays the actual filter applied.&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;
searchLookUpEdit1.Properties.View.FindFilterText = &amp;quot;Mike&amp;quot;;
&lt;/code&gt;&lt;/pre&gt;
    
&lt;h3&gt;WinForms MemoEdit - Auto Height within the Layout Control&lt;/h3&gt;

&lt;p&gt;Our WinForms MemoEdit control includes a new &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraEditors.MemoEdit.LayoutControlAutoHeightMode?v=25.1"&gt;LayoutControlAutoHeightMode&lt;/a&gt; property. This property specifies how MemoEdit height adjusts to fit content when placed within a &lt;code&gt;LayoutControl&lt;/code&gt;. Available auto height modes include:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;code&gt;Default&lt;/code&gt; / &lt;code&gt;None&lt;/code&gt;: MemoEdit height remains fixed and does not adjust to content. A scrollbar appears if content exceeds available height.&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;GrowOnly&lt;/code&gt;: MemoEdit height increases to fit content but does not decrease when content is reduced.&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;GrowAndShrink&lt;/code&gt;: MemoEdit height increases or decreases automatically to fit content.&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/25-1-winforms-memoedit-auto-height.gif" alt="WinForms MemoEdit - Auto Height within the Layout Control, DevExpress" class="small" width="422px"&gt;

&lt;h3&gt;
    WinForms CheckedListBoxControl - Custom SVG Check Icon
&lt;/h3&gt;

&lt;p&gt;
    Our WinForms CheckedListBoxControl now supports &lt;strong&gt;user defined&lt;/strong&gt; (custom) SVG check icons. With v25.1, you can specify unique icons for checked, unchecked, and grayed item states. This enhancement supports&amp;nbsp;customizations designed to match application themes/UI standards.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/25-1-winforms-checkedlistbox.png" alt="WinForms CheckedListBoxControl - Custom SVG Check Icon, DevExpress" class="small" width="257px"&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;checkedListBoxControl1.CheckStyle = CheckStyles.UserDefined;
checkedListBoxControl1.ImageOptions.SvgImageChecked = svgImageCollection1[&amp;quot;checkedState&amp;quot;];
checkedListBoxControl1.ImageOptions.SvgImageUnchecked = svgImageCollection1[&amp;quot;uncheckedState&amp;quot;];
checkedListBoxControl1.ImageOptions.SvgImageSize = new System.Drawing.Size(16, 16);
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;WinForms TokenEdit - Advanced Mode&lt;/h3&gt;
    
&lt;p&gt;This EAP includes new APIs for our WinForms TokenEdit. With these APIS, you can customize the following advanced mode settings:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Caret Animation&lt;/li&gt;
    &lt;li&gt;Selection Animation&lt;/li&gt;
    &lt;li&gt;Selection Color Customization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    Use the &lt;code&gt;TokenEdit.Properties.AdvancedModeOptions&lt;/code&gt; property to access Advanced Mode settings:
&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;// Enable Advanced Mode
tokenEdit.Properties.UseAdvancedMode = DefaultBoolean.True;
// Enable caret animation
tokenEdit.Properties.AdvancedModeOptions.AllowCaretAnimation = DefaultBoolean.True;
// Animate selection
tokenEdit.Properties.AdvancedModeOptions.AllowSelectionAnimation = DefaultBoolean.True;
// Set selection color
tokenEdit.Properties.AdvancedModeOptions.SelectionColor = Color.Yellow;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
    We also implemented a new &lt;code&gt;QueryAdvancedMode&lt;/code&gt; static event. This event fires for every &lt;code&gt;TokenEdit&lt;/code&gt; control in the project and allows you to configure Advanced Mode settings based on your preferences.
&lt;/p&gt;

&lt;h2&gt;
    WinForms Ribbon and Bars
&lt;/h2&gt;

&lt;h3&gt;
    Maximize/Minimize Ribbon
&lt;/h3&gt;

&lt;p&gt;
    New APIs include:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.Ribbon.RibbonControl.MaximizeRibbon(DevExpress.XtraBars.Ribbon.RibbonPage)?v=25.1" target="_blank"&gt;MaximizeRibbon(RibbonPage)&lt;/a&gt;: Expands a minimized Ribbon.&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.Ribbon.RibbonControl.AllowMinimizeRibbonOnDoubleClick?v=25.1" target="_blank"&gt;RibbonControl.AllowMinimizeRibbonOnDoubleClick&lt;/a&gt;: Specifies whether users can minimize the Ribbon by double-clicking a page header.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
    Identify Bar Items and Bar Links
&lt;/h3&gt;

&lt;p&gt;
    New APIs include:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.BarManager.GetItemAt(System.Drawing.Point)?v=25.1" target="_blank"&gt;BarManager.GetItemAt(Point)&lt;/a&gt;: Identifies the bar item at specified screen coordinates.&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.BarManager.GetLinkAt(System.Drawing.Point)?v=25.1" target="_blank"&gt;Barmanager.GetLinkAt(Point)&lt;/a&gt;: Identifies the &lt;code&gt;BarItemLink&lt;/code&gt; at specified screen coordinates.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code class="language-csharp" data-line="2"&gt;barManager1.ItemClick += (sender, e) =&amp;gt; {
    BarItem item = barManager1.GetItemAt(Cursor.Position);
    // BarItemLink itemLink = barManager1.GetLinkAt(Cursor.Position);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Debug.WriteLine(item.Caption);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;
    Handle Bar Item Right-Clicks
&lt;/h3&gt;

&lt;p&gt;The WinForms Bar Manager and Ribbon Control will support right-click handling for bar items. New events include:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.Ribbon.RibbonControl.ItemRightClick?v=25.1" target="_blank"&gt;RibbonControl.ItemRightClick&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.BarManager.ItemRightClick?v=25.1" target="_blank"&gt;BarManager.ItemRightClick&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.BarItem.ItemRightClick?v=25.1" target="_blank"&gt;BarItem.ItemRightClick&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
    
We also introduced a new &lt;code&gt;e.MouseButtton&lt;/code&gt; event parameter that allows you to identify the pressed mouse button.

&lt;h3&gt;
    Mnemonic-Based Submenu Navigation
&lt;/h3&gt;

&lt;p&gt;
    With v25.1, we enhanced keyboard accessibility for traditional Toolbar-based user interfaces. Users can cycle through submenu items with the same mnemonic (denoted by &lt;code&gt;&amp;amp;&lt;/code&gt; in captions). When multiple items within a submenu have identical mnemonics, repeated key presses navigate through them sequentially. The feature is automatically enabled and does not require additional configuration.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/25-1-winforms-submenu-mnemonic-based-nav.gif" alt="Mnemonic-Based Submenu Navigation, DevExpress" class="small" width="421px"&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;barItemSaveAs.Caption = &amp;quot;Save &amp;amp;As&amp;quot;;
barItemSaveAll.Caption = &amp;quot;Save &amp;amp;All&amp;quot;;
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;
    BarItem - Support for AutomationId
&lt;/h3&gt;

&lt;p&gt;
    The &lt;code&gt;AutomationId&lt;/code&gt; property - a unique identifier that distinguishes UI elements in automated tests and accessibility (a11y) tools - is now available for BarItem objects. This property is automatically set to the bar item&amp;#39;s &lt;code&gt;Name&lt;/code&gt;.
&lt;/p&gt;

&lt;h3&gt;
    BarToggleSwitchItem - Toggle Switch Width
&lt;/h3&gt;

&lt;p&gt;
    With v25.1, you can specify a toggle switch bar item width. Use the &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.BarToggleSwitchItem.EditorToThumbWidthRatio?v=25.1" target="_blank"&gt;EditorToThumbWidthRatio&lt;/a&gt; property to set the item&amp;#39;s total width relative to the width of the thumb.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/25-1-winforms-bar-toggle-item.png" alt="BarToggleSwitchItem - Toggle Switch Width, DevExpress" class="small" width="349px"&gt;

&lt;h2&gt;
    WinForms Accordion Control
&lt;/h2&gt;

&lt;h3&gt;Badges and Hints&lt;/h3&gt;

&lt;p&gt;
    We integrated our &lt;a href="https://www.devexpress.com/products/net/controls/winforms/navigation/" target="_blank"&gt;WinForms Accordion Control&lt;/a&gt; with the Adorner UI Manager to help&amp;nbsp;display badges/hints and highlight specific Accordion UI elements.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/25-1-winforms-accordion-badges.png" alt="WinForms Accordion Control - Badges and Hints, DevExpress" class="small" width="271px"&gt;

&lt;pre&gt;&lt;code class="language-csharp" data-line="9"&gt;using System.Drawing;
using DevExpress.Utils.VisualEffects;
// ...
Badge badgeInbox;
public Form1() {
    InitializeComponent();
    badgeInbox = new Badge();
    // Assign the badge to the &amp;#39;Inbox&amp;#39; accordion item
    badgeInbox.TargetElement = accordionItemInbox;
    // Specify badge text
    badgeInbox.Properties.Text = &amp;quot;17&amp;quot;;
    // Specify badge location and offset
    badgeInbox.Properties.Location = ContentAlignment.TopLeft;
    badgeInbox.Properties.Offset = new Point(85, 6);
    // Customize badge appearance
    badgeInbox.Appearance.BackColor = Color.Gray;
    badgeInbox.Appearance.BorderColor = Color.Gray;
    badgeInbox.Appearance.ForeColor = Color.White;
    badgeInbox.Appearance.Font = new Font(&amp;quot;Tahoma&amp;quot;, 8.25F, FontStyle.Bold);

    // Add the badge to the AdornerUIManager
    adornerUIManager1.Elements.Add(badgeInbox);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;
    Shortcuts
&lt;/h3&gt;

&lt;p&gt;
    Accordion items now support keyboard shortcuts. Use the &lt;code&gt;ShortcutKey&lt;/code&gt; property to specify a predefined or custom keyboard shortcut. This enhancement improves accessibility, especially for applications with complex navigation structures.
&lt;/p&gt;

&lt;h2&gt;
    XtraMessageBox Enhancements
&lt;/h2&gt;

&lt;p&gt;
    v25.1 introduces new functionality designed to:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Display the DevExpress Message Box in the Windows Taskbar, ensuring it is easily accessible to users.&lt;/li&gt;
    &lt;li&gt;Define the start position of the Message Box on screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code class="language-csharp" data-line="9,21,22,25"&gt;void messageButton_Click(object sender, EventArgs e) {
    XtraMessageBoxArgs args = new XtraMessageBoxArgs() {
        Caption = &amp;quot;Tip&amp;quot;,
        Text = &amp;quot;Hello DevExpress!&amp;quot;,
        Buttons = new DialogResult[] { DialogResult.OK },
    };
    args.ImageOptions.SvgImage = svgImageCollection1[&amp;quot;info&amp;quot;];
    args.ImageOptions.SvgImageSize = new Size(32, 32);
    args.Showing += Args_Showing;
    XtraMessageBox.Show(args);
}
void Args_Showing(object sender, XtraMessageShowingArgs e) {
    // Get the screen working area
    Rectangle workingArea = Screen.PrimaryScreen.WorkingArea;

    // Calculate bottom-right position
    int x = workingArea.Right - e.MessageBoxForm.Width;
    int y = workingArea.Bottom - e.MessageBoxForm.Height;
            
    // Define message box start position 
    e.MessageBoxForm.StartPosition = FormStartPosition.Manual;
    e.MessageBoxForm.Location = new Point(x, y);

    // Display the message box in the Windows taskbar
    e.MessageBoxForm.ShowInTaskbar = true;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;
    Your Feedback Counts
&lt;/h2&gt;

&lt;p&gt;
    If you have a specific question about our WinForms EAP (v25.1), feel free to submit a support ticket via the DevExpress &lt;a href="https://supportcenter.devexpress.com/ticket/list" target="_blank"&gt;Support Center&lt;/a&gt;. We will be happy to follow-up.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;For additional information on what you can expect, refer to our&amp;nbsp;&lt;/span&gt;&lt;a href="https://community.devexpress.com/Blogs/winforms/archive/2025/02/18/winforms-june-2025-roadmap-v25-1-.aspx" target="_blank"&gt;June 2025 Roadmap&lt;/a&gt;&amp;nbsp;(you can also&amp;nbsp;leave your feedback at the end of the article).&lt;/p&gt;</description>
      <pubDate>Wed, 02 Apr 2025 21:20:00 Z</pubDate>
      <dc:creator>Bogdan Kharchenko (DevExpress)</dc:creator>
      <dx:excerpt>Our next major update (v25.1) is a couple of months away. As such, we wanted to preview a few features/capabilities we expect to ship this spring. As you will see, new desktop development standards (.NET Core, AI, Accessibility) remain key focus areas.</dx:excerpt>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388220</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2025/02/18/winforms-june-2025-roadmap-v25-1-.aspx</link>
      <category domain="https://community.devexpress.com/Tags/.NET">.NET</category>
      <category domain="https://community.devexpress.com/Tags/.net+8">.net 8</category>
      <category domain="https://community.devexpress.com/Tags/.NET+9">.NET 9</category>
      <category domain="https://community.devexpress.com/Tags/.NET+Core">.NET Core</category>
      <category domain="https://community.devexpress.com/Tags/2025">2025</category>
      <category domain="https://community.devexpress.com/Tags/accessibility">accessibility</category>
      <category domain="https://community.devexpress.com/Tags/roadmap">roadmap</category>
      <category domain="https://community.devexpress.com/Tags/v25.1">v25.1</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <title>WinForms — June 2025 Roadmap (v25.1)</title>
      <description>&lt;p&gt;
    This blog post outlines new WinForms–related features we expect to ship in our mid–year release (v25.1). You can leave your feedback at the end of the article - &lt;a href="https://community.devexpress.com/Blogs/winforms/archive/2025/02/18/winforms-june-2025-roadmap-v25-1-.aspx#feedback"&gt;Go to the survey now&lt;/a&gt;.&lt;/p&gt;

&lt;div class="Note"&gt;
    &lt;p&gt;
        The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This roadmap and the features/products listed within it are subject to change. You should not rely on or use this information to help make a purchase decision about Developer Express Inc products.
    &lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;
    Modern .NET Development &amp;amp; Productivity
&lt;/h2&gt;

&lt;h3&gt;
    Replicate Modern Microsoft Outlook and Microsoft Teams User Interfaces (.NET 8+)    
&lt;/h3&gt;

&lt;p&gt;
    Just over a year ago, Microsoft released a &lt;a href="https://support.microsoft.com/en-us/office/getting-started-with-the-new-outlook-for-windows-656bb8d9-5a60-49b2-a98b-ba7822bc7627" target="_blank"&gt;new Outlook for Windows&lt;/a&gt; with a modern and simplified design. This updated version of Outlook offers a streamlined, web–integrated experience that aligns with Microsoft&amp;#39;s Fluent 2 design standards.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/ms-new-outlook.png" alt="Replicate Modern Microsoft Outlook and Microsoft Teams User Interfaces - WinForms UI Controls, DevExpress"&gt;

&lt;p&gt;
    Many of our customers have expressed interest in replicating this contemporary UI within their own DevExpress-powered WinForms applications. If you&amp;#39;ve used the new version of Outlook, you know that Microsoft&amp;#39;s new user experience extends far beyond simple UI enhancements: 
&lt;/p&gt;

&lt;ul&gt;
   &lt;li&gt;The app&amp;#39;s sidebar extends up to the form title, optimizing vertical space to display more menu items on–screen.&lt;/li&gt;
   &lt;li&gt;The sidebar can be &amp;#39;collapsed&amp;#39; using the Ribbon&amp;#39;s hamburger button, allowing for a more compact layout.&lt;/li&gt;
   &lt;li&gt;The Ribbon control and form title can host additional UI elements, including buttons, a search panel, and other interactive UI components.&lt;/li&gt;
   &lt;li&gt;Fluent UI enhancements include semi–transparent effects, colorful flat icons, rounded corners, specious paddings, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    With our v25.1 release, you will be able to replicate Outlook&amp;#39;s UI within your DevExpress–powered WinForms applications.
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;We will add our &lt;code&gt;RoundedSkinPanel&lt;/code&gt; control to the toolbox so you can use it at design time as a container for DevExpress UI controls. We also plan to introduce this option to our WinForms Layout Control.&lt;/li&gt;
    &lt;li&gt;We will add a new project template to our &lt;a href="https://docs.devexpress.com/WindowsForms/405275/net-net-core-support/project-template-kit" target="_blank"&gt;Template Kit for .NET 8+&lt;/a&gt;. This template will allow you to create Outlook–inspired apps with a single click.&lt;/li&gt;
    &lt;li&gt;We will update our Outlook–inspired DevAV Demo app to better align with Microsoft’s new design patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
    Middle–Tier Application Server Project Template for EF Core (.NET 8+) 
&lt;/h3&gt;

&lt;p&gt;
    Our &lt;a href="https://docs.devexpress.com/WindowsForms/405275/net-net-core-support/project-template-kit" target="_blank"&gt;Template Kit for .NET 8+&lt;/a&gt; will include a new project template. You will be able to quickly create a WinForms application with a secured data layer powered by ASP.NET Core WebAPI, EF Core, and Middle–Tier Application Server*. With this additional layer of protection (authentication, authorization, and encryption), desktop UI clients will not be able to access database connection information or modify database tables directly. Developers will be able to maintain an existing data context (DbContext) and business logic while establishing remote/secure connections to an RDBMS–based data store.
&lt;/p&gt;

&lt;div class="Note"&gt;
    &lt;p&gt;
        * Ships as part of the DevExpress XAF (Cross–Platform .NET App UI). An active DevExpress Universal subscription is required to use this capability.
    &lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
    Template–based applications will feature a built–in login form. Additionally, the app will support UI/UX customizations based on associated access permissions. This means that UI elements, available features, and displayed content can dynamically adjust based on user roles.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/winforms-client-middletier-devexpress.png" alt="Middle–Tier Application Server Project Template for EF Core - WinForms Data Grid, DevExpress" style="width:941px;"&gt;

&lt;p&gt;
    This new project template will be based on the following &lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-backend-using-middletier-server" target="_blank"&gt;GitHub example&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;
    Item Template Support in the New Template Kit (.NET 8+)
&lt;/h3&gt;

&lt;p&gt;
    Our Template Kit for .NET 8+ will include Item Templates for DevExpress User Controls, Ribbon Forms, Classic Forms, and more. We will also give you the ability to add multiple views or forms to a single project simultaneously (for example, Office–inspired forms featuring our Rich Text Editor, Spreadsheet, and Scheduler controls). This eliminates the need to create each from separately via individual templates.
&lt;/p&gt;

&lt;p&gt;
    This approach follows the same implementation as our &lt;a href="https://www.devexpress.com/subscriptions/whats-new/#maui-templates" target="_blank"&gt;.NET MAUI project wizard&lt;/a&gt;.
&lt;/p&gt;

&lt;img src="https://www.devexpress.com/subscriptions/i/24.2/24-2-maui-template@2x.png" style="width:710px;" alt="Item Template Support in the New Template Kit (.NET 8+) - WinForms UI Controls, DevExpress"&gt;

&lt;p&gt;
    In 2025, we expect to officially release our &lt;a href="https://www.devexpress.com/ui-templates/winforms/" target="_blank"&gt;WinForms UI Templates&lt;/a&gt; – a set of predesigned and ready–to–use UI components and forms (currently available as EAP). We plan to include these UI Templates in our Template Kit. 
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/winforms-ui-templates/winforms-ui-templates.png" alt="Item Template Support in the New Template Kit (.NET 8+) - WinForms UI Templates, DevExpress"&gt;

&lt;h3&gt;
    New Desktop Demo on Sharing Code, Data, Security with Mobile and Web Apps (.NET 8+) 
&lt;/h3&gt;

&lt;p&gt;
    In 2024, we published a series of &lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;blog posts&lt;/a&gt; focused on maintaining WinForms/WPF apps and developing companion/hybrid apps (.NET MAUI, Blazor) for non–Windows platforms (Web, Mobile, macOS, Linux), with a focus on code reuse and secure data access.
&lt;/p&gt;

&lt;p&gt;
    This year, we plan to develop a new demo application to help developers…
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Use proven solution structures and architectures.&lt;/li&gt;
    &lt;li&gt;Leverage best practices to securely interact with DevExpress data–aware controls (grids, lookups, etc.), API services, and remote data sources (such as, &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.Data.VirtualServerModeSource" target="_blank"&gt;VirtualServerModeSource&lt;/a&gt;, &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.Data.Linq.EntityInstantFeedbackSource"&gt;EntityInstantFeedbackSource&lt;/a&gt;, etc.).&lt;/li&gt;
    &lt;li&gt;Share and reuse data models, business logic, and code base across applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
    Accessibility / UI Automation Enhancements
&lt;/h2&gt;

&lt;p&gt;
    We expect to improve Accessibility–related support throughout this year. We also plan to introduce Accessibility across all DevExpress WinForms demos and project templates (by default).
&lt;/p&gt;

&lt;h3&gt;
    Enhanced Accessibility within Report Viewers
&lt;/h3&gt;

&lt;p&gt;
    We are committed to improving accessibility compliance across all supported platforms. These enhancements will help us achieve even better support for assistive technologies and compliance with industry standards.
&lt;/p&gt;

&lt;h3&gt;
    WinForms Dashboard — UI Automation
&lt;/h3&gt;

&lt;div class="Note"&gt;
    You need a license for the &lt;a href="https://www.devexpress.com/buy/winforms-wpf-blazor-asp-net-maui/" target="_blank"&gt;DevExpress Universal Subscription&lt;/a&gt; to use features listed below in production code.
&lt;/div&gt;

&lt;p&gt;
    We will add keyboard navigation and screen reader support to the DevExpress WinForms Dashboard control.
&lt;/p&gt;

&lt;h2&gt;
    Artificial Intelligence (AI)
&lt;/h2&gt;

&lt;h3&gt;
    AI–Driven Semantic Search in the WinForms Data Grid
&lt;/h3&gt;

&lt;p&gt;
    With v25.1, we will deliver more intuitive and user–friendly search experiences and allow users to locate relevant information across large data sets faster and more accurately. Our &lt;a href="https://www.devexpress.com/products/net/controls/winforms/grid/" target="_blank"&gt;WinForms Data Grid&lt;/a&gt; will utilize natural language processing (NLP) to interpret user queries and match data based on synonyms, related concepts, and contextual meaning, even if they do not contain exact keywords used in the query.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/winforms-grid-semantic-search-devexpress.gif" class="small" style="width:626px;" alt="AI–Driven Semantic Search in the WinForms Data Grid, DevExpress"&gt;

&lt;p&gt;
    To enable AI–driven semantic search in the Data Grid, you will have to register an embedding generator, supply a vector storage/database, and connect our new semantic search behavior to the WinForms Data Grid. You will be able to configure behavior settings (such as, search accuracy, the maximum number of results, etc.).
&lt;/p&gt;

&lt;h3&gt;
    WinForms Reports&amp;nbsp;— AI Enhancements
&lt;/h3&gt;

&lt;p&gt;
    In our v25.1 release cycle (June 2025), we will introduce multiple AI-powered capabilities to streamline report creation, improve data visualization, and expedite localization. These features will help users design, analyze, and preview reports more efficiently.
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;AI-Powered Localization&lt;/strong&gt; — Automatically translate report content into multiple languages, reducing the energy required to create reports for a multi-lingual user base.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Intelligent Error Resolution&lt;/strong&gt; — The DevExpress Report Design Analyzer will suggest and apply fixes for common errors to help users resolve issues quickly and achieve expected document output.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Automated Layout &amp;amp; Styling Enhancements&lt;/strong&gt; — AI-driven recommendations will optimize report layouts and ensure a professional design that follows best practices.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;AI-Generated Data for Print Preview&lt;/strong&gt; — Users can preview reports with AI-generated sample data before connecting to a live data source. This will introduce faster design iterations and report layout experiments before integrating DevExpress Reports into an app.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Natural Language to SQL &amp;amp; Expression Bindings&lt;/strong&gt; — Report creators will be able to describe their data needs in plain language, and AI will recommend SQL queries or expression bindings automatically.&lt;/li&gt;
    &lt;li&gt;And More..&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
    WinForms PDF Viewer — AI-powered Behaviors
&lt;/h3&gt;

&lt;p&gt;
    We will integrate AI-powered features into our WinForms and WPF PDF Viewer components. These enhancements will allow users to quickly understand the underlying essence of individual documents via Generative AI summaries and translate documents to a preferred language using AI-powered translations.
&lt;/p&gt;

&lt;p&gt;
    Additionally, users will be able to interact with an AI-powered assistant directly within their applications and ask questions about PDF documents.
&lt;/p&gt;

&lt;p&gt;
    &lt;b&gt;Note&lt;/b&gt;: Our implementation is based on the functionality provided by the Microsoft.Extensions.AI library. To access these features, you will need to register the &lt;code&gt;IChatClient&lt;/code&gt; implementation in your app (based on the desired AI services provider: OpenAI, Azure Open AI, Google Gemini or local open-source models powered by Ollama). 
&lt;/p&gt;

&lt;h2&gt;
    WinForms Charts (.NET 8+): DateOnly/TimeOnly Support
&lt;/h2&gt;

&lt;p&gt;
    DateOnly and TimeOnly support will be added to &lt;a href="https://www.devexpress.com/products/net/controls/winforms/chart/" target="_blank"&gt;DevExpress Charts&lt;/a&gt; by the end of this year.
&lt;/p&gt;

&lt;h2&gt;
    Improved User Experience: Visual Studio Design Time for WinForms (.NET 8+)
&lt;/h2&gt;

&lt;p&gt;We expect to improve the user experience within the Visual Studio WinForms designer with the following:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;b&gt;Smart Tags Menus for DevExpress UI Controls&lt;/b&gt;: These menus will provide quick access to common actions and settings.&lt;/li&gt;
    &lt;li&gt;&lt;b&gt;Streamlined Navigation&lt;/b&gt;: Users will be able to seamlessly navigate from control wizards directly to the Properties window.&lt;/li&gt;
&lt;/ul&gt;
    
&lt;p&gt;Rider has &lt;a href="https://www.jetbrains.com/rider/whatsnew/" target="_blank"&gt;announced&lt;/a&gt; partial support for DevExpress WinForms UI controls in Rider IDE v2024.3. We look forward to collaborating with JetBrains to further enhance the DevExpress user experience for those targeting the Rider IDE.&lt;/p&gt;

&lt;h2&gt;
    Microsoft .NET Upgrade Assistant Integration for Project Upgrades
&lt;/h2&gt;

&lt;p&gt;
    We expect to ship a new plugin (VSIX) for Microsoft .NET Upgrade Assistant. We expect this plugin to ultimately replace the DevExpress Project Converter for .NET 8+ projects. Advantages include:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;The .NET Upgrade Assistant allows us to support more IDEs and operating systems, as it is available in Visual Studio Code for Windows, Mac, and Linux. The upgrade process is simpler and streamlined because we will need to maintain less code across versions (in the future, we expect to offer the Project Converter for .NET Framework projects only).&lt;/li&gt;
    &lt;li&gt;Unlike our Project Converter, the new plugin will have access to NuGet, Roslyn, MEF, and other IDE services. With the .NET Upgrade Assistant&amp;#39;s auto–fix capabilities, we can automatically detect and safely resolve breaking changes in DevExpress code. This includes but is not limited to obsolete code replacements (such as, &lt;code&gt;Font&lt;/code&gt; &amp;gt; &lt;code&gt;DXFont&lt;/code&gt;, &lt;code&gt;DxPivotGrid&lt;/code&gt; &amp;gt; &lt;code&gt;DxPivotTable&lt;/code&gt;, etc.).&lt;/li&gt;
    &lt;li&gt;We will deliver the new plugin for minor and major DevExpress versions. The plugin will include the latest &amp;quot;Directory.Packages.props&amp;quot; file updates (with DevExpress–compatible 3rd party dependencies for CPM). You will be able to update all project dependencies and resolve security vulnerabilities with a single click. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    Our &lt;a href="https://docs.devexpress.com/GeneralInformation/15655/installation/gui-install-mode" target="_blank"&gt;Unified Component Installer&lt;/a&gt; will automatically install the new plug–in. The plugin will also be able for download from the Visual Studio Marketplace, &lt;a href="https://www.nuget.org" target="_blank"&gt;nuget.org&lt;/a&gt;, and &lt;a href="https://nuget.devexpress.com" target="_blank"&gt;nuget.devexpress.com&lt;/a&gt;.
&lt;/p&gt;

&lt;h2&gt;
    WinForms Data Grid
&lt;/h2&gt;

&lt;h3&gt;
    Filter Data Rows Based on Conditional Formatting Rules
&lt;/h3&gt;

&lt;p&gt;
    In our next major release (v25.1 June 2025), we will extend our WinForms Data Grid so you can filter data rows based on &lt;a href="https://docs.devexpress.com/WindowsForms/115548/controls-and-libraries/data-grid/appearance-and-conditional-formatting#conditional-formatting" target="_blank"&gt;conditional formatting rules&lt;/a&gt; and display only records that meet specific conditions (for example, you will be able to only display overdue invoices in a financial report, display critical issues in a task management system, etc.).
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/winforms-grid-conditional-formatting-filters.png" style="width:786px;" alt="Filter Data Rows Based on Conditional Formatting Rules - WinForms Data Grid, DevExpress"&gt;

&lt;p&gt;We also expect to introduce the following UI/UX options:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;A &amp;quot;Filters&amp;quot; tab page within our Excel–inspired filter popup.&lt;/li&gt;
    &lt;li&gt;A &amp;quot;Conditional Filters&amp;quot; submenu in Grid and Filter Editor menus.&lt;/li&gt;
    &lt;li&gt;New APIs to filter data rows by conditional formatting rules in code as needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
    ItemsView – Data Validation
&lt;/h3&gt;

&lt;p&gt;
    We will introduce the &lt;code&gt;ValidateRow&lt;/code&gt; event in the ItemsView.
&lt;/p&gt;

&lt;h2&gt;
    Enhancements in WinForms Grid–based Controls
&lt;/h2&gt;

&lt;h3&gt;
    Advanced Expression Editor for Conditional Formatting Rules
&lt;/h3&gt;

&lt;p&gt;
    We plan to replace our Filter Control with &lt;a href="https://docs.devexpress.com/WindowsForms/6212/common-features/expressions/expression-editor?p=netframework#new-expression-editor" target="_blank"&gt;Expression Editor&lt;/a&gt; within the Edit Formatting Rule dialog. While the Filter Control is ideal for basic and quick filters, the Expression Editor offers much more options, including:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
    	&lt;p&gt;
        	&lt;b&gt;Advanced Expression Support&lt;/b&gt;
        	&lt;br&gt;
        	Users can write complex, custom expressions using a rich set of operators, functions, and logic. 
    	&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    	&lt;p&gt;
            &lt;b&gt;Dynamic Expression Building&lt;/b&gt;
            &lt;br&gt;
            With intuitive syntax highlighting and intelligent code completion (suggesting functions as you type), users can build complex expressions on the fly.
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    	&lt;p&gt;
            &lt;b&gt;Real-Time Validation&lt;/b&gt;
            &lt;br&gt;
            The Expression Editor performs real-time validation, flagging errors and providing feedback instantly. This ensures that users can catch syntax or logical mistakes before applying the expression.
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
    	&lt;p&gt;
            &lt;b&gt;Intuitive and User-Friendly UI&lt;/b&gt;
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
    Adjust Horizontal Scrolling on Touchpad
&lt;/h3&gt;

&lt;p&gt;
    DevExpress grid–based controls (such as GridControl, TreeList, and VGrid) support smooth scrolling with a touchpad. However, some users may experience inverted horizontal scrolling behavior when using a touchpad on Windows devices.
&lt;/p&gt;

&lt;p&gt;
    With v25.1, we will introduce a new &lt;code&gt;AllowInvertedScrolling&lt;/code&gt; that reverses the current horizontal scrolling direction in our WinForms grid-based controls when using the touchpad.
&lt;/p&gt;

&lt;h2&gt;
    WinForms Spreadsheet
&lt;/h2&gt;

&lt;h3&gt;
    OLE Objects
&lt;/h3&gt;

&lt;p&gt;
    Our WinForms Spreadsheet control will support embedded and linked objects (OLE objects) within Excel documents. You will be able to import and save documents with OLE Objects to supported Excel formats without content loss. OLE Object icons will be properly displayed when you preview the document, print, or export it to PDF.
&lt;/p&gt;

&lt;p&gt;
    Additionally, we&amp;#39;ll introduce APIs to create, remove, and manage OLE objects in code.
&lt;/p&gt;

&lt;h3&gt;
    New Excel Functions Support
&lt;/h3&gt;

&lt;p&gt;
    We will enhance our Spreadsheet calculation engine by adding support for modern, dynamic array-based Excel functions. In v25.1, we will introduce functions like:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;XLOOKUP&lt;/li&gt;
    &lt;li&gt;XMATCH&lt;/li&gt;
    &lt;li&gt;UNIQUE&lt;/li&gt;
    &lt;li&gt;And more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    These functions will improve data lookup, filtering, and transformation capabilities in our WinForms Spreadsheet control.
&lt;/p&gt;

&lt;h2&gt;
    WinForms Rich Text Editor
&lt;/h2&gt;

&lt;h3&gt;
    CJK (Chinese, Japanese and Korean) Text Wrapping
&lt;/h3&gt;

&lt;p&gt;
    To enhance document rendering and readability, our WinForms Rich Text Editor will support CJK text wrapping and line breaking rules. This feature applies correct line breaks between characters for Chinese, Japanese, and Korean (CJK) text. Documents using these wrapping rules will be displayed, printed, and exported to PDF with appropriate formatting. 
&lt;/p&gt;

&lt;h3&gt;
    RTL (Right-to-Left) Engine Enhancements
&lt;/h3&gt;

&lt;p&gt;
    In our mid-year release v25.1, we will extend our RTL rendering engine for our Rich Text Editor. This functionality will ensure correct rendering and PDF export for document paragraphs, tables and shapes containing bi-directional text (mixed Right-to-Left and Left-to-Right text blocks).
&lt;/p&gt;

&lt;h3&gt;
    Export Word Content Controls to PDF AcroForm Fields
&lt;/h3&gt;

&lt;p&gt;
    We will enhance our Word-to-PDF export engine and support the conversion of Word content controls into PDF AcroForm fields. With this capability, you&amp;#39;ll be able to import or generate Word documents with content controls in our Rich Text Editor, export these documents to PDF, and automatically generate corresponding AcroForm fields in PDF output. This feature will apply to the following content control types:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Plain Text Boxes&lt;/li&gt;
    &lt;li&gt;Check Boxes&lt;/li&gt;
    &lt;li&gt;Popups&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
    Persistent Skin and Palette Settings
&lt;/h2&gt;

&lt;p&gt;
    This feature ensures that skin and palette settings are saved between application runs. When a user customizes app appearance, selected skin and palette settings are stored and automatically reapplied the next time the application starts.
&lt;/p&gt;

&lt;p&gt;
    We expect to add a new option to the &lt;a href="https://docs.devexpress.com/WindowsForms/120180/whats-installed/project-settings-page" target="_blank"&gt;DevExpress Project Settings&lt;/a&gt; page in Visual Studio. With v25.1, you will no longer need to manually implement logic for saving and loading user preferences.
&lt;/p&gt;

&lt;h2&gt;
    WinForms Step Progress Bar – UX Enhancements 
&lt;/h2&gt;

&lt;p&gt;
    With our next major update (v25.1), we will improve user experience for workflows that require step–based navigation. At present, step navigation in our WinForms Step Progress Bar control is controlled programmatically, limiting user interaction.
&lt;/p&gt;

&lt;p&gt;
    With v25.1, users will be able to change progress by clicking on individual steps. Direct interaction with the progress bar aligns with common UI standards, making navigation more user–friendly and adaptable to different workflow scenarios. 
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/winforms-step-progress-bar-devexpress.gif" class="small" style="width:368px;" alt="WinForms Step Progress Bar, DevExpress"&gt;

&lt;h2&gt;
    WinForms Accordion Control
&lt;/h2&gt;

&lt;h3&gt;
    Badges and Hints
&lt;/h3&gt;

&lt;p&gt;
    With v25.1, we expect to integrate our &lt;a href="https://www.devexpress.com/products/net/controls/winforms/navigation/" target="_blank"&gt;WinForms Accordion Control&lt;/a&gt; with the Adorner UI Manager so that you can display badges and hints to highlight specific Accordion UI elements.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/2025-1-roadmap/winforms-accordion-badges.png" alt="Badges and Hints - WinForms Accordion Control, DevExpress" class="small" style="width:689px;"&gt;

&lt;h3&gt;
    Shortcuts
&lt;/h3&gt;

&lt;p&gt;
    Accordion items will support keyboard shortcuts. This enhancement will improve accessibility, especially in applications with complex navigation structures.
&lt;/p&gt;

&lt;h2&gt;
    SVG Image Support for Check Boxes in Checked ListBox
&lt;/h2&gt;

&lt;p&gt;
    Our WinForms Checked ListBox can display custom images within checkboxes for different check states. At present, you can only display raster images (for example, PNG), limiting flexibility and resolution quality. With v25.1, you will be able to display high–quality SVG images within checkboxes for resolution–independent interfaces.
&lt;/p&gt;

&lt;h2&gt;
    XtraMessageBox – Display in the Task Bar
&lt;/h2&gt;

&lt;p&gt;
    With v25.1, we will introduce new functionality designed to:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;
        Display the DevExpress Message Box in the Windows Taskbar, ensuring it is easily accessible to users.
    &lt;/li&gt;
    &lt;li&gt;
        Define the start position of the Message Box on the screen.
    &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
    WinForms Reports&lt;/h2&gt;

&lt;h3&gt;
    Document Generation Enhancements
&lt;/h3&gt;

&lt;h4&gt;
    Improved Label and Table Cell Text Formatting
&lt;/h4&gt;

&lt;p&gt;
    Our next release will allow users to define line spacing for displayed text/values within the DevExpress Report Designer. This capability will enhance readability and provide greater control over individual report layouts. Users can directly modify line spacing for basic report controls to improve multi-line text clarity and reduce the memory footprint associated with the XRRichText control.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/reporting/2025/v25-1-roadmap/reporting-v25.1-roadmap-line-spacing-labels.png" alt="Different Line Spacing Options, DevExpress Reporting" style="width:3700px;height:1900px;"&gt;

&lt;h4&gt;
    Time Zone Conversion
&lt;/h4&gt;

&lt;p&gt;
    With v25.1, DevExpress Reports will be able to convert UTC date and time values to the viewer&amp;#39;s local time zone. This feature is essential for applications with a global user base, as it ensures that all users analyze report data in their respective local time zones.
&lt;/p&gt;

&lt;h3&gt;
    IDE Integration
&lt;/h3&gt;

&lt;h4&gt;
    Visual Studio Enhancements
&lt;/h4&gt;

&lt;p&gt;
    We will continue improving startup time, stability, and resilience of the DevExpress Visual Studio Report Designer for .NET.
&lt;/p&gt;

&lt;h4&gt;
    JetBrains Rider Support (Research Phase)
&lt;/h4&gt;

&lt;p&gt;
    We recognize the growing popularity of JetBrains Rider and will research ways to extend our tools to support this environment. During the v25.1 release cycle, we will actively explore DevExpress Report Designer support for JetBrains Rider.
&lt;/p&gt;

&lt;h2&gt;
    BI Dashboard for WinForms
&lt;/h2&gt;

&lt;div class="Note"&gt;
    You need a license for the &lt;a href="https://www.devexpress.com/buy/winforms-wpf-blazor-asp-net-maui/" target="_blank"&gt;DevExpress Universal Subscription&lt;/a&gt; to use features listed below in production code.
&lt;/div&gt;

&lt;h3&gt;
    Data Handling Improvements
&lt;/h3&gt;

&lt;h4&gt;
    DateOnly &amp;amp; TimeOnly Support
&lt;/h4&gt;

&lt;p&gt;
    The DevExpress BI Dashboard will support &lt;code&gt;DateOnly&lt;/code&gt; and &lt;code&gt;TimeOnly&lt;/code&gt; values for the following:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Binding dashboard widgets to data&lt;/li&gt;
    &lt;li&gt;Creating dashboard and query parameters&lt;/li&gt;
    &lt;li&gt;Using calculated fields&lt;/li&gt;
    &lt;li&gt;Applying time-based filters (e.g., range filter)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
    New PowerPoint API Presentation Library
&lt;/h2&gt;

&lt;div class="Note"&gt;
    &lt;p&gt;
        Usage requires one of the following subscriptions: &lt;a href="https://www.devexpress.com/products/net/office-file-api/" target="_blank"&gt;Office File API&lt;/a&gt;, &lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;Universal&lt;/a&gt;.
    &lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
    We expect to extend the capabilities of the DevExpress &lt;a href="https://www.devexpress.com/products/net/office-file-api/" target="_blank"&gt;Office File API library&lt;/a&gt; with a new Presentation library for .NET.
&lt;/p&gt;

&lt;p&gt;
    This non-visual library will allow developers to generate, modify, print, and export PowerPoint presentations to different formats in code. We expect to support the following PowerPoint-related usage scenarios programmatically:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Create new presentations from scratch.&lt;/li&gt;
    &lt;li&gt;Save presentations using the PPTX (OpenXml) document format.&lt;/li&gt;
    &lt;li&gt;Merge multiple presentations into a single file.&lt;/li&gt;
    &lt;li&gt;Add, remove, and extract presentation slides; modify slide settings.&lt;/li&gt;
    &lt;li&gt;Add, remove, and customize slide elements (shapes, texts, tables and more).&lt;/li&gt;
    &lt;li&gt;Apply formatting to slide elements.&lt;/li&gt;
    &lt;li&gt;Print and export presentations to PDF.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    &lt;b&gt;Note&lt;/b&gt;: The CTP (Community Technology Preview) version of our PowerPoint Presentation Library is expected mid-year. As in any CTP, functional limitations will apply. 
&lt;/p&gt;

&lt;h2&gt;
    PDF Document API
&lt;/h2&gt;

&lt;div class="Note"&gt;
    &lt;p&gt;
        Usage requires one of the following subscriptions: &lt;a href="https://www.devexpress.com/products/net/office-file-api/" target="_blank"&gt;Office File API&lt;/a&gt;, &lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;Universal&lt;/a&gt;.
    &lt;/p&gt;
&lt;/div&gt;

&lt;h3&gt;
    PDF Document Compression
&lt;/h3&gt;

&lt;p&gt;
    To reduce file size when saving PDF documents using DevExpress PDF Document APIs, we will introduce a compression engine for the PDF object streams. This engine will optimize PDFs for more efficient storage/sharing options. New compression mechanisms will apply to various document structures, including PDF forms, fonts, and graphics.
&lt;/p&gt;


&lt;h3&gt;
    Redaction API
&lt;/h3&gt;

&lt;p&gt;
    We&amp;#39;ll introduce a new Redaction API that allows users to secure PDF documents and permanently remove sensitive information. This feature will allow you to:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Erase personal or confidential data from a PDF document and prevent end-users from accessing, viewing or copying it.&lt;/li&gt;
    &lt;li&gt;Apply overlays with custom text or graphics over redacted areas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
    Word Processing Document API
&lt;/h2&gt;

&lt;div class="Note"&gt;
    &lt;p&gt;
        Usage requires one of the following subscriptions: &lt;a href="https://www.devexpress.com/products/net/office-file-api/" target="_blank"&gt;Office File API&lt;/a&gt;, &lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;Universal&lt;/a&gt;.
    &lt;/p&gt;
&lt;/div&gt;

&lt;h3&gt;
    Compare Word Documents
&lt;/h3&gt;

&lt;p&gt;
    We will introduce new APIs to compare Word documents. This capability will allow you to:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Identify changes between two document versions.&lt;/li&gt;
    &lt;li&gt;Generate revision-based output highlighting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    &lt;b&gt;Note&lt;/b&gt;: These new APIs will focus on detecting changes and making revisions for the visible document content only.
&lt;/p&gt;

&lt;h2 id="feedback"&gt;
    Your Feedback Counts
&lt;/h2&gt;

&lt;p&gt;
    If you have a specific question about our June 2025 WinForms roadmap, feel free to submit a support ticket via the DevExpress &lt;a href="https://supportcenter.devexpress.com/ticket/list" target="_blank"&gt;Support Center&lt;/a&gt;. We will be happy to follow-up.
&lt;/p&gt;

&lt;div data-survey-id="d08d92ee-be03-4bb9-b7f5-9450d1472469" data-survey-auth-required="false"&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 18 Feb 2025 07:00:00 Z</pubDate>
      <dc:creator>Bogdan Kharchenko (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388185</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2024/09/18/winforms-connect-net-desktop-client-to-secure-backend-with-middle-tire-server-ef-core.aspx</link>
      <category domain="https://community.devexpress.com/Tags/.NET">.NET</category>
      <category domain="https://community.devexpress.com/Tags/access+control">access control</category>
      <category domain="https://community.devexpress.com/Tags/ASP.NET">ASP.NET</category>
      <category domain="https://community.devexpress.com/Tags/authentication">authentication</category>
      <category domain="https://community.devexpress.com/Tags/authorization">authorization</category>
      <category domain="https://community.devexpress.com/Tags/EF">EF</category>
      <category domain="https://community.devexpress.com/Tags/EFCore">EFCore</category>
      <category domain="https://community.devexpress.com/Tags/Entity+Framework">Entity Framework</category>
      <category domain="https://community.devexpress.com/Tags/grid">grid</category>
      <category domain="https://community.devexpress.com/Tags/rbac">rbac</category>
      <category domain="https://community.devexpress.com/Tags/security">security</category>
      <category domain="https://community.devexpress.com/Tags/web+api">web api</category>
      <category domain="https://community.devexpress.com/Tags/webapi">webapi</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <category domain="https://community.devexpress.com/Tags/XAF">XAF</category>
      <title>WinForms — Connect a .NET Desktop Client to a Middle Tier Security Server (EF Core with WebSockets)</title>
      <description>&lt;h2&gt;Series Overview&lt;/h2&gt;&lt;p&gt;This article is the second in a&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/07/18/winforms-connect-a-net-desktop-client-to-a-secure-backend-with-the-devexpress-web-api-service-ef-core-with-odata.aspx" target="_blank"&gt;series&lt;/a&gt; of posts for teams who wish to build&amp;nbsp;.NET desktop applications that communicate securely with backend services.&lt;/p&gt;&lt;h3&gt;Table of Contents&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/02/09/modern-desktop-apps-and-their-complex-architectures.aspx" target="_blank" rel="nofollow noreferrer"&gt;Intro — Modern Desktop Apps And Their Complex Architectures&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/mobile/archive/2024/05/02/choosing-a-framework-and-app-architecture-for-desktop-and-mobile-cross-platform-apps.aspx" target="_blank"&gt;Choosing a Framework/App Architecture for Desktop &amp;amp; Mobile Cross-Platform Apps&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/wpf-winforms-maui-shared-codebase" target="_blank"&gt;GitHub sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;Connect a .NET Desktop Client (WinForms&amp;nbsp;Data Grid)&amp;nbsp;to a Custom ASP.NET Core Service (&lt;/a&gt;&lt;strong&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;EF Core with pure Web&amp;nbsp;API&lt;/a&gt;&lt;/strong&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;)&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;Part 1 — Architecture and Data Binding&lt;/a&gt;&amp;nbsp; /&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service" target="_blank"&gt;GitHub&amp;nbsp;sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/09/23/connect-a-winforms-data-grid-to-an-arbitrary-asp-net-core-webapi-service-powered-by-ef-core-add-editing-features.aspx" target="_blank"&gt;Part 2 — Add Editing Features&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service-enable-editing" target="_blank" rel="nofollow noreferrer"&gt;GitHub sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/10/08/connect-a-winforms-data-grid-to-an-arbitrary-asp-net-core-webapi-service-powered-by-ef-core-authenticate-users-and-protect-data.aspx" target="_blank"&gt;Part&amp;nbsp;3&amp;nbsp;— Authenticate Users and Protect Data&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service-enable-pbac" target="_blank"&gt;GitHub sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/12/18/connect-a-winforms-data-grid-to-an-arbitrary-asp-net-core-webapi-service-powered-by-ef-core-authorization-code-flow.aspx" target="_blank"&gt;Part 4&amp;nbsp;— Authorization Code Flow with&amp;nbsp;Keycloak&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service-enable-auth-code-flow" target="_blank"&gt;GitHub sample&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/07/18/winforms-connect-a-net-desktop-client-to-a-secure-backend-with-the-devexpress-web-api-service-ef-core-with-odata.aspx" target="_blank"&gt;Connect a .NET Desktop Client (WinForms&amp;nbsp;Data Grid)&amp;nbsp;to a Secure Backend Web API Service (&lt;strong&gt;EF Core&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;with&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;OData&lt;/strong&gt;)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color:#ffff99;"&gt;&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/09/18/winforms-connect-net-desktop-client-to-secure-backend-with-middle-tire-server-ef-core.aspx" target="_blank"&gt;Connect a .NET Desktop Client (WinForms Data Grid) to a&amp;nbsp;Middle Tier Security Server (&lt;strong&gt;EF Core&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;with&amp;nbsp;WebSockets&lt;/strong&gt;)&lt;/a&gt;&amp;nbsp;- this post&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;TBD&amp;nbsp;—&amp;nbsp;Azure Databases with Data API Builder&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;TBD&amp;nbsp;—&amp;nbsp;GraphQL APIs&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We also have related blog series, which may be of interest for you as well:&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2023/04/11/consume-the-devexpress-backend-web-api-from-javascript-with-svelte-part-1.aspx" target="_blank"&gt;JavaScript — Consume the DevExpress Backend Web API with Svelte&lt;/a&gt;&amp;nbsp;(7 parts from data editing to validation,&amp;nbsp;localization, reporting).&lt;/p&gt;&lt;h3&gt;Target Audience&lt;/h3&gt;&lt;p&gt;The target audience for this post is as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;EF Core/XPO Developers&lt;/strong&gt; planning to modernize an existing application or create a new project. Using the techniques herein, you will be able to maintain an existing data context (&lt;code&gt;DbContext&lt;/code&gt; or &lt;code&gt;Session&lt;/code&gt;) while establishing remote/secure connections from any .NET client to an RDBMS-based data store. You can reuse your current DbContext and EF Core data model with little or no modification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ADO.NET Developers&lt;/strong&gt;&amp;nbsp;using&amp;nbsp;direct SQL, stored procedures, or similar data access methods. This post will help you get started with EF Core, Microsoft&amp;#39;s ORM. With EF Core, you can leverage the benefits of a distributed app&amp;nbsp;architecture and introduce role-based access control alongside user authentication.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Why Use a Middle Tier Security&amp;nbsp;Server?&lt;/h3&gt;

&lt;p&gt;As you know, direct client-database connections can expose sensitive data. A middle-tier server introduces an important security layer - and when designed properly - can effectively&amp;nbsp;manage authentication, authorization, and encryption for your next great app. With this additional layer of protection, desktop UI clients cannot access database connection information or modify database tables directly.&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/security/system-with-middle-tier-server.png" alt="Middle Tier Application Server"&gt;

&lt;p&gt;When using a Middle Tier Server architecture, DbContext and other EF Core CRUD APIs are still used in UI client app code - which interacts with the server remotely. Only the server has direct access to the database. Before passing data to the client&amp;#39;s DbContext, the server enforces security measures such as authentication, authorization, and data validation.&lt;/p&gt;

&lt;h3&gt;The DevExpress Middle Tier Security Server&lt;/h3&gt;

&lt;p&gt;By introducing a middle tier:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You separate the client interface from backend logic and database access. This separation simplifies client application development and reduces code duplication, as the same logic can be reused by multiple UI clients - making the &amp;#39;system&amp;#39; easier to maintain/scale.&lt;/li&gt;
&lt;li&gt;You can focus on creating intuitive interfaces without worrying about database access/and many security-related issues.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
    Our &lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF (Cross-Platform .NET App UI)&lt;/a&gt; and &lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;Universal Subscription&lt;/a&gt; include a &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404398/data-security-and-safety/security-system/security-tiers/middle-tier-security-ef-core/connect-to-the-efcore-middle-tier-service-from-non-xaf-applications" target="_blank"&gt;Middle Tier Server&lt;/a&gt; that allows EF Core developers to maintain their standard DbContext while establishing remote and secure database connections from .NET clients, such as WinForms or WPF. The server&amp;#39;s security system engine supports Type, Record, and Field Level Authorization. This security system also powers our free &lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service" target="_blank"&gt;Backend Web API Service&lt;/a&gt;&amp;nbsp;- used by many XAF and non-XAF DevExpress users across multiple platforms, including JS, .NET MAUI, Blazor.
&lt;/p&gt;

&lt;p&gt;The DevExpress Middle Tier solution &amp;quot;replaces&amp;quot; direct database connections with middleware, ensuring that only authorized users can access specific/sensitive data or perform granted actions:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;
var httpRemoteRepository = new HttpRemoteRepository(httpClient, typeof(EFCoreDbContext).FullName);
var optionsBuilder = new DbContextOptionsBuilder&amp;lt;EFCoreDbContext&amp;gt;();
optionsBuilder.UseMiddleTier(opt =&amp;gt;
    opt.UseRemoteRepository(httpRemoteRepository));
optionsBuilder.UseChangeTrackingProxies();
optionsBuilder.UseLazyLoadingProxies();
var dbContextOptions = optionsBuilder.Options;
var dbContext = new EFCoreDbContext(dbContextOptions);
var users = dbContext.Employees.ToList();
&lt;/code&gt;&lt;/pre&gt;

&lt;div class="Note"&gt;
This functionality can be used on a standalone basis (if you do not require XAF, you are not forced to use it). It relies on Visual Studio 2022 and a few non-visual cross-platform .NET 6+&amp;nbsp;packages. These include&amp;nbsp;DevExpress.Data, DevExpress.Xpo, DevExpress.Document.Processor, and other core libraries. Though these packages have &amp;quot;XAF&amp;quot; or &amp;quot;ExpressApp&amp;quot; in their names, you do not need to pull XAF WinForms, WebForms, and Blazor dependencies into&amp;nbsp;your projects. &lt;a href="https://www.devexpress.com/products/net/application_framework/security-web-api-service.xml#faq"&gt;Read FAQ&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;WinForms Demo Application&lt;/h2&gt;

&lt;p&gt;We&amp;#39;ve developed &lt;strong&gt;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-backend-using-middletier-server" target="_blank"&gt;a GitHub example&lt;/a&gt;&lt;/strong&gt; that implements middleware in a real-world scenario. The example connects a Windows Forms (.NET 8) client application to a secure backend using the DevExpress ASP.NET Core Middle Tier server.&lt;/p&gt;

&lt;p&gt;The example demonstrates the following capabilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to build a data model for application business entities and security policies with EF Core.&lt;/li&gt;
&lt;li&gt;How to use the DevExpress ASP.ENT Core Middle Tier Security Server to connect a Windows Forms .NET 8 client application to a backend.&lt;/li&gt;
&lt;li&gt;How to define access permissions and activate authentication/authorization for a .NET 8 WinForms app.&lt;/li&gt;
&lt;li&gt;How to create a login form.&lt;/li&gt;
&lt;li&gt;How to customize UI/UX for a given user based on associated access permissions.&lt;/li&gt;
&lt;li&gt;How to create an edit form to modify and save data (CRUD).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
    The example creates &lt;strong&gt;Admin&lt;/strong&gt; and &lt;strong&gt;User&lt;/strong&gt; roles and defines the following permissions:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Admin&lt;/strong&gt;: Read/Write (full access)&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;User&lt;/strong&gt;: Read Only (data editing is not allowed)&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code class="language-csharp" data-line="7,12,13"&gt;
public class Updater : ModuleUpdater {
    private const string AdministratorUserName = &amp;quot;Admin&amp;quot;;
    private const string AdministratorRoleName = &amp;quot;Administrators&amp;quot;;
    private const string DefaultUserName = &amp;quot;User&amp;quot;;
    private const string DefaultUserRoleName = &amp;quot;Users&amp;quot;;
	//...
    private PermissionPolicyRole GetUserRole() {
        PermissionPolicyRole userRole = ObjectSpace.FirstOrDefault&amp;lt;PermissionPolicyRole&amp;gt;(u =&amp;gt; u.Name == DefaultUserRoleName);
        if(userRole == null) {
            userRole = ObjectSpace.CreateObject&amp;lt;PermissionPolicyRole&amp;gt;();
            userRole.Name = DefaultUserRoleName;
            userRole.AddTypePermission&amp;lt;Employee&amp;gt;(SecurityOperations.Read, SecurityPermissionState.Allow);
            userRole.AddTypePermission&amp;lt;Employee&amp;gt;(SecurityOperations.Write, SecurityPermissionState.Deny);
        }
        return userRole;
    }
	//...
}
&lt;/code&gt;&lt;/pre&gt;

The LogIn form attempts to log the user into the security system:

&lt;pre&gt;&lt;code class="language-csharp" data-line="5"&gt;
using(AuthForm authForm = new AuthForm()) {
    if(authForm.ShowDialog() == DialogResult.OK) {
        MiddleTierStartupHelper.WaitMiddleTierServerReady(MiddleTierStartupHelper.EFCoreWebApiMiddleTierInstanceKey, TimeSpan.MaxValue);
        // User authorization.
        var securedClient = RemoteContextUtils.CreateSecuredClient(System.Configuration.ConfigurationManager.AppSettings[&amp;quot;endpointUrl&amp;quot;], authForm.Login, authForm.Password);
        RemoteContextUtils.SecuredDataServerClient = securedClient;
        DbContextOptions&amp;lt;DXApplication1EFCoreDbContext&amp;gt; options = RemoteContextUtils.CreateDbContextOptions(securedClient);
        RemoteContextUtils.Options = options;
        Application.Run(new MainForm());
    }
    else
        break;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/security/winforms-ui-client-login-form.png" alt="The LogIn Form"&gt;

If user authentication was successful, the &lt;code&gt;SetUpBinding&lt;/code&gt; method creates a DbContext and binds the grid to data:

&lt;pre&gt;&lt;code class="language-csharp" data-line="10,11,12,13"&gt;
public partial class MainForm : RibbonForm {
    EntityServerModeSource serverModeSource = new EntityServerModeSource();
    DXApplication1EFCoreDbContext dbContext = null;
    public MainForm() {
        InitializeComponent();
        SetUpBinding();
    }
    void SetUpBinding() {
        dbContext?.Dispose();
        dbContext = RemoteContextUtils.GetDBContext();
        serverModeSource = new EntityServerModeSource() { ElementType = typeof(Employee), KeyExpression = &amp;quot;ID&amp;quot; };
        serverModeSource.QueryableSource = dbContext.Employees;
        gridControl.DataSource = serverModeSource;
    }
}
&lt;/code&gt;&lt;/pre&gt;

Highlighted code snippets enable/disable Ribbon commands (New, Edit, Delete) based on access permissions for the current (logged in) user:

&lt;pre&gt;&lt;code class="language-csharp" data-line="5,6,7"&gt;
public MainForm() {
    InitializeComponent();
    SetUpBinding();

    bbiNew.Enabled = RemoteContextUtils.IsGranted(typeof(Employee), SecurityOperations.Create);
    bbiDelete.Enabled = RemoteContextUtils.IsGranted(typeof(Employee), SecurityOperations.Delete);
    bbiEdit.Enabled = RemoteContextUtils.IsGranted(typeof(Employee), SecurityOperations.Write);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;div style="width:693px;"&gt;
	&lt;img src="https://community.devexpress.com/blogs/winforms/security/winforms-ui-client-user-role.png" alt="WinForms UI Client for Admin | DevExpress" data-label-before="Admin" data-label-after="User" data-comparer-theme="dark" data-comparer-position="50" data-before-src="https://community.devexpress.com/blogs/winforms/security/winforms-ui-client-admin-role.png"&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-backend-using-middletier-server" target="_blank"&gt;Download Example from GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;Whether you&amp;#39;re an EF Core/XPO developer looking to modernize legacy software, or an ADO.NET developer tasked to deliver a secure/scalable solution, implementing a middle tier server is an important step forward. The DevExpress XAF-based Middle Tier solution allows you to quickly integrate a middle tier server (with minimal modifications) into your system architecture, improving maintainability and your solution&amp;#39;s overall security posture.&lt;/p&gt;

&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;


&lt;div data-survey-id="002ab03f-6bc2-48b7-8c75-a5fd31e15c8a" data-survey-auth-required="false"&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 18 Sep 2024 01:10:00 Z</pubDate>
      <dc:creator>Bogdan Kharchenko (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388190</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2024/09/17/winforms-early-access-preview-v24-2.aspx</link>
      <category domain="https://community.devexpress.com/Tags/2024">2024</category>
      <category domain="https://community.devexpress.com/Tags/ai">ai</category>
      <category domain="https://community.devexpress.com/Tags/eap">eap</category>
      <category domain="https://community.devexpress.com/Tags/Grid+Control">Grid Control</category>
      <category domain="https://community.devexpress.com/Tags/prerelease">prerelease</category>
      <category domain="https://community.devexpress.com/Tags/roadmap">roadmap</category>
      <category domain="https://community.devexpress.com/Tags/v24.2">v24.2</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <title>WinForms — Early Access Preview (v24.2)</title>
      <description>&lt;p&gt;Our next major update (v24.2) is a couple of months away. As such, we wanted to preview the features we expect to ship this winter and invite all active &lt;a href="https://www.devexpress.com/subscriptions/universal.xml"&gt;DevExpress Universal&lt;/a&gt; or &lt;a href="https://www.devexpress.com/subscriptions/dxperience.xml"&gt;DXperience&lt;/a&gt; subscriber to download and install our Early Access Preview (EAP) today (visit the &lt;a href="https://www.devexpress.com/ClientCenter/DownloadManager/"&gt;DevExpress Download Manager&lt;/a&gt; to obtain the EAP build).&amp;nbsp;As you will see below, &lt;span&gt;new desktop development standards (.NET Core,&amp;nbsp;&lt;/span&gt;&lt;span&gt;Security,&amp;nbsp;&lt;/span&gt;&lt;span&gt;Accessibility, AI)&amp;nbsp;&lt;/span&gt;continue to remain &lt;span&gt;key focus areas.&lt;/span&gt;&lt;/p&gt;

&lt;div class="Note"&gt;
    &lt;p&gt;Early Access and CTP builds are provided solely for early testing purposes and are not ready for production use. This build can be installed side by side with other major versions of DevExpress products. Please backup your project and other important data before installing Early Access and CTP builds.&lt;/p&gt;
    &lt;p&gt;
        This EAP may not include all features/products we expect to ship in our v24.2 release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months. For additional information on what you can expect, refer to our &lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/07/23/winforms-year-end-roadmap-v24-2.aspx"&gt;Year-End 2024.2 Roadmap&lt;/a&gt;.
    &lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;.NET Core / .NET &lt;br&gt;&lt;/h2&gt;&lt;h3&gt;.NET 9 Support&lt;/h3&gt;

&lt;p&gt;The DevExpress WinForms product line now supports &lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-9-release-candidate-1-is-now-available/" target="_blank"&gt;NET 9 RC1&lt;/a&gt; .&lt;/p&gt;

&lt;h3&gt;.NET 8, .NET Framework 4.6.2, Visual Studio 2019 Will Be Minimally Supported Versions for DevExpress Libraries (v24.2+)&lt;/h3&gt;

&lt;p&gt;
    Learn more about this global change in &lt;a href="https://community.devexpress.com/blogs/news/archive/2024/07/08/net-net-8-and-net-framework-4-6-2-are-minimally-supported-target-frameworks-for-devexpress-libraries-in-v24-2.aspx" target="_blank"&gt;this announcement&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;
    Easier Upgrade to .NET from .NET Framework
&lt;/h3&gt;

&lt;p&gt;
    Our Project Converter can now convert DevExpress assembly references in your solution or specific projects to corresponding DevExpress NuGet packages. By selecting the &amp;quot;Convert DevExpress assembly references to NuGet packages&amp;quot; option under Advanced settings, you can easily transition to NuGet-based project management. 
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/devexpress-project-converter.png" alt="DevExpress Project Converter v24.2" style="width:730px;"&gt;

&lt;p&gt;
    To streamline the upgrade process, our Project Converter automatically creates backup (.bak) files for your CSPROJ and VBPROJ files. Once DevExpress assemblies are converted, complete the upgrade process by using the &lt;a href="https://learn.microsoft.com/en-us/dotnet/core/porting/upgrade-assistant-overview" target="_blank"&gt;Microsoft .NET Upgrade Assistant&lt;/a&gt;&amp;nbsp;(to migrate your application to the most recent version of .NET). 
&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;:&amp;nbsp;&amp;nbsp;&lt;a href="https://docs.devexpress.com/WindowsForms/405091/net-net-core-support/migrate-net-framework-app-to-net?v=24.2"&gt;Migrate a .NET Framework App to .NET&lt;/a&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&lt;a href="https://docs.devexpress.com/GeneralInformation/116042/nuget/obtain-your-nuget-feed-credentials"&gt;Choose Suitable NuGet Feed&lt;/a&gt;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&lt;a href="https://docs.devexpress.com/GeneralInformation/116698/nuget/setup-visual-studios-nuget-package-manager?v=24.2" target="_blank"&gt;Install NuGet Packages in IDE&lt;/a&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;
    Enhanced UX with the WinForms .NET Core Designer
&lt;/h3&gt;

&lt;p&gt;
    We&amp;#39;ve optimized the way we load DevExpress NuGet packages and skins to improve form load performance within Visual Studio’s .NET/.NET Core WinForms Designer. This improves startup load time &lt;strong&gt;by 20-35% (when compared to v24.1)&lt;/strong&gt;. Performance enhancements are most noticeable for complex projects.
&lt;/p&gt;

&lt;p&gt;
    The following internal test results illustrate performance improvements we&amp;#39;ve made in this release cycle:
&lt;/p&gt;

&lt;table cellpadding="8" cellspacing="0"&gt;
  
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;v24.2 (ms)&lt;/th&gt;
      &lt;th&gt;v24.1 (ms)&lt;/th&gt;
    &lt;/tr&gt;
  
  
    &lt;tr&gt;
      &lt;td&gt;
          &lt;strong&gt;Test #1&lt;/strong&gt;&lt;br&gt;
          Win.Grid NuGet package&lt;br&gt;
          A form with Ribbon and Data Grid controls.
      &lt;/td&gt;
      &lt;td&gt;2,424&lt;/td&gt;
      &lt;td&gt;3,929&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;
          &lt;strong&gt;Test #2&lt;/strong&gt;&lt;br&gt;
          Win.Design NuGet package&lt;br&gt;
          A form with Ribbon and Scheduler controls.
      &lt;/td&gt;
      &lt;td&gt;3,121&lt;/td&gt;
      &lt;td&gt;4,743&lt;/td&gt;
    &lt;/tr&gt;
  
&lt;/table&gt;&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;:&amp;nbsp;&amp;nbsp;&lt;a href="https://docs.devexpress.com/WindowsForms/405090/net-net-core-support/create-net-app-with-design-time-support?v=24.2#add-devexpress-controls-to-an-existing-net-app-for-winforms" target="_blank"&gt;Install a Unified NuGet Package vs Atomic (Control-Specific) NuGet Packages with Design-Time Support&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;
    TimeOnly Support in the WinForms TimeEdit
&lt;/h3&gt;

&lt;p&gt;
    The WinForms TimeEdit control now supports the &lt;code&gt;TimeOnly&lt;/code&gt; data type and incorporates a TimeOnly mask within the Mask Settings editor.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-timeedit-timeonly-mask-settings.png" alt="TimeOnly Support in the WinForms TimeEdit" style="width:638px;"&gt;

&lt;h3&gt;
    New TimeOnly Functions
&lt;/h3&gt; 

&lt;p&gt;This EAP adds new TimeOnly-specific criteria functions to our criteria language and Grid-based UI controls (Data Grid, Vertical Grid, TreeList).
&lt;/p&gt;

&lt;p&gt;New TimeOnly functions include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;BeforeMidday&lt;/strong&gt; - Filters records that occur before 12:00 PM.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;AfterMidday&lt;/strong&gt; - Filters records that occur after 12:00 PM.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;ThisHour&lt;/strong&gt; - Filters records that occur during the current hour.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NextHour&lt;/strong&gt; - Filters records that occur during the next hour.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;LastHour&lt;/strong&gt; - Filters records that occurred during the previous hour.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsMorning&lt;/strong&gt; - Filters records that occur between 6:00 AM and 12:00 PM.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsAfternoon&lt;/strong&gt; - Filters records that occur between 12:00 PM and 6:00 PM.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsEvening&lt;/strong&gt; - Filters records that occur between 6:00 PM and 9:00 PM.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsNight&lt;/strong&gt; - Filters records that occur between 9:00 PM and 6:00 AM.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsWorkTime&lt;/strong&gt; - Filters records that occur during work hours (9:00 AM to 5:00 PM).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsFreeTime&lt;/strong&gt; - Filters records that occur outside of work hours (9:00 AM to 5:00 PM).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsLunchTime&lt;/strong&gt; - Filters records that occur during lunch time (12:00 PM to 1:00 PM).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsSameHour&lt;/strong&gt; - Filters records that occur exactly at the specified hour (e.g., 2 PM).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;IsSameMinute&lt;/strong&gt; - Filters records that occur exactly at the specified hour and minute (2:35 PM).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;TimeOnlyFromParts&lt;/strong&gt; - Returns the time value for the specified time with a specified precision (hour, minute, [seconds], [milliseconds]).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    Applies to:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Criteria Operators&lt;/li&gt;
    &lt;li&gt;Filtering UI (Column Filter Popup, Filter Editor)&lt;/li&gt;
    &lt;li&gt;Expression Editor&lt;/li&gt;
    &lt;li&gt;Conditional Formatting Rules&lt;/li&gt;
    &lt;li&gt;Unbound Columns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    You can use these new TimeOnly functions in your DevExpress-powered .NET and .NET Framework Windows Forms applications.
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://docs.devexpress.com/CoreLibraries/4928/devexpress-data-library/criteria-language-syntax?v=24.2#timeonly-functions" target="_blank"&gt;Documentation&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
    TimeOnly Range Filter within the Filter Popup
&lt;/h3&gt;

&lt;p&gt;
    The Excel-Style Column Filter ships with a new Time Range Editor (by default). In addition to traditional date filtering options, users can now filter records based on specific time intervals (such as hours, minutes, or custom time ranges).&lt;/p&gt;

&lt;p&gt;
    Features include:
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Full-Day Coverage&lt;/strong&gt;: The Time Range Editor allows users to specify a From/To range that spans the entire day (00:00 to 23:59).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Track-Bar Sliders&lt;/strong&gt;: Users can use intuitive track-bar sliders to modify time range values.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Text Editors with Time Mask&lt;/strong&gt;: Range selectors are accompanied by text editors that utilize a TimeOnly mask (passed from column&amp;nbsp;editor settings).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fine-Grained Control&lt;/strong&gt;: The minimum step for modifying slider values&amp;nbsp;is set to a 5-minute interval (offering a balance between ease of use and precision).&amp;nbsp;Users can enter an exact time within&amp;nbsp;text editors.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Tooltips for Visual Feedback&lt;/strong&gt;: To enhance usability, tooltips appear over sliders as users modify time range values.&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-timeonly-range-filter.png" alt="TimeOnly Range Filter in Filter Popup" style="width:728px;"&gt;

&lt;p&gt;Use the following code for backward compatibility:&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;ExcelFilterOptions.Default.PreferredTimeValuesTabFilterType = ExcelFilterOptions.TimeValuesTabFilterType.Tree;
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;
    Minute Rounding for TimeOnly Values
&lt;/h3&gt;

&lt;p&gt;
    Within all&amp;nbsp;DevExpress Filtering UIs&amp;nbsp;(including&amp;nbsp;Column Filter Popups and the Filter Editor), TimeOnly values are rounded to minutes, ignoring seconds and milliseconds. 
&lt;/p&gt;

&lt;p&gt;
    On the UI side, we automatically simplify interval-based criteria into a more readable format within the Filter Panel and AutoFilter Row. For instance, a condition like &lt;strong&gt;[Time] &amp;gt;= 7:44 and [Time] &amp;lt; 7:45&lt;/strong&gt; is visually condensed to &lt;strong&gt;[Time] = 7:44&lt;/strong&gt;. This representation enhances the user experience by removing unnecessary time components, such as seconds and milliseconds (often irrelevant for everyday&amp;nbsp;use cases). 
&lt;/p&gt;

&lt;h3&gt;Guidance on New Desktop Development Standards&lt;/h3&gt;

&lt;p&gt;
    The architecture of desktop/Windows-based&amp;nbsp;applications has shifted significantly over the last few years - from straightforward two-tier &amp;quot;client/server&amp;quot; models to distributed systems. This shift places new demands on how developers design, secure, and optimize applications:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;Backend and Frontend Separation&lt;/li&gt;
    &lt;li&gt;Increased Complexity in Data Persistence&lt;/li&gt;
    &lt;li&gt;Asynchronous UI Clients (Frontend)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
   To help guide our loyal WinForms/WPF/VCL/.NET MAUI/XAF customers through new/tightened security requirements (and associated complexities) for Windows desktop application development, we&amp;#39;ve written a series of blog posts, docs&amp;nbsp;and created associated demo applications:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/02/09/modern-desktop-apps-and-their-complex-architectures.aspx" target="_blank" rel="nofollow noreferrer"&gt;Intro — Modern Desktop Apps And Their Complex Architectures&lt;/a&gt;&lt;span&gt;&amp;nbsp;|&amp;nbsp;&lt;/span&gt;&lt;a href="https://community.devexpress.com/blogs/mobile/archive/2024/05/02/choosing-a-framework-and-app-architecture-for-desktop-and-mobile-cross-platform-apps.aspx" target="_blank"&gt;Choosing a Framework/App Architecture for Desktop &amp;amp; Mobile Cross-Platform Apps&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/wpf-winforms-maui-shared-codebase" target="_blank"&gt;GitHub sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;Part 1 — Connect a WinForms Data Grid to an Arbitrary ASP.NET Core WebAPI Service Powered by EF Core — Architecture and Data Binding&lt;/a&gt;&amp;nbsp; /&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service" target="_blank"&gt;GitHub&amp;nbsp;sample&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/09/23/connect-a-winforms-data-grid-to-an-arbitrary-asp-net-core-webapi-service-powered-by-ef-core-add-editing-features.aspx" target="_blank"&gt;Part 2 — Connect a WinForms Data Grid to an Arbitrary ASP.NET Core WebAPI Service Powered by EF Core — Add Editing Features&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service-enable-editing" target="_blank" rel="nofollow noreferrer"&gt;GitHub sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/10/08/connect-a-winforms-data-grid-to-an-arbitrary-asp-net-core-webapi-service-powered-by-ef-core-authenticate-users-and-protect-data.aspx" target="_blank"&gt;Part&amp;nbsp;3&amp;nbsp;— Connect a WinForms Data Grid to an Arbitrary ASP.NET Core WebAPI Service Powered by EF Core&amp;nbsp;—&amp;nbsp;Authenticate users and protect data&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service-enable-pbac" target="_blank"&gt;GitHub sample&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/07/18/winforms-connect-a-net-desktop-client-to-a-secure-backend-with-the-devexpress-web-api-service-ef-core-with-odata.aspx" target="_blank"&gt;Part 4 — Connect a .NET Desktop Client to a Secure Backend Web API Service (EF Core&amp;nbsp;&lt;strong&gt;with&amp;nbsp;&lt;/strong&gt;OData)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/09/18/winforms-connect-net-desktop-client-to-secure-backend-with-middle-tire-server-ef-core.aspx" target="_blank"&gt;Part 5 — Connect a .NET Desktop Client to a Backend Using a Middle Tier Server (EF Core&amp;nbsp;&lt;strong&gt;without&amp;nbsp;&lt;/strong&gt;OData)&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/401191/dotnet-core-support?v=24.2#faq" target="_blank"&gt;Tips &amp;amp; Tricks / FAQ on&amp;nbsp;.NET / .NET Core Support and Migration from .NET Framework&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/GeneralInformation/116698/nuget/setup-visual-studios-nuget-package-manager" target="_blank"&gt;Install NuGet Packages in Visual Studio, VS Code, and Rider&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/GeneralInformation/400604/nuget/integrate-nuget-to-popular-continuous-integration-systems" target="_blank"&gt;Install NuGet Packages in CI/CD (GitHub Actions, GitLab, Azure DevOps)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/GeneralInformation/400604/nuget/integrate-nuget-to-popular-continuous-integration-systems" target="_blank"&gt;&lt;/a&gt;&lt;a href="https://docs.devexpress.com/GeneralInformation/404166/nuget/security-licensing-reliability-considerations" target="_blank"&gt;NuGet&amp;nbsp;Security, Licensing, and Troubleshooting Best Practices&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;
    Artificial Intelligence (AI)
&lt;/h2&gt;

&lt;h3&gt;Common&lt;/h3&gt;&lt;p&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/09/18/devexpress-ai-powered-extensions-extending-text-editors-with-ai-eap-v24-2.aspx" target="_blank"&gt;DevExpress AI-powered APIs&lt;/a&gt;&amp;nbsp;allow&amp;nbsp;you to integrate the following AI services into your DevExpress-powered WinForms application:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;OpenAI&lt;/li&gt;
    &lt;li&gt;Azure OpenAI&lt;/li&gt;
    &lt;li&gt;Ollama&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    AI services and DevExpress AI extensions (behaviors) follow a &amp;quot;bring your own key&amp;quot; approach. DevExpress does not provide a REST API or include built-in LLMs/SLMs. To use AI services, you need an active Azure/OpenAI subscription to obtain the&amp;nbsp;necessary REST API endpoint, key, and model deployment name. This information&amp;nbsp;must be provided at application startup to register AI clients and enable DevExpress AI-powered features in your WinForms application.
&lt;/p&gt;

&lt;p&gt;
    The following code snippet registers an Azure OpenAI client:
&lt;/p&gt;

&lt;pre&gt;&lt;code class="language-csharp"&gt;using Azure.AI.OpenAI;
using DevExpress.AIIntegration;

internal static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        AIExtensionsContainerDesktop.Default.RegisterChatClientOpenAIService(
            new AzureOpenAIClient(new Uri(AzureOpenAIEndpoint), new System.ClientModel.ApiKeyCredential(AzureOpenAIKey)),
            deploymentName: DeploymentName
        );
        Application.Run(new Form1());
    }
    static string AzureOpenAIEndpoint { get { return Environment.GetEnvironmentVariable(&amp;quot;AZURE_OPENAI_ENDPOINT&amp;quot;); } }
    static string AzureOpenAIKey { get { return Environment.GetEnvironmentVariable(&amp;quot;AZURE_OPENAI_APIKEY&amp;quot;); } }
    static string DeploymentName { get { return Environment.GetEnvironmentVariable(&amp;quot;AZURE_OPENAI_DEPLOYMENTNAME&amp;quot;); } }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;
    Review the following help topic for additional information on prerequisites, installation guidelines, and AI client registration processes: &lt;a href="https://docs.devexpress.com/WindowsForms/405151/ai-powered-extensions?v=24.2" target="_blank"&gt;DevExpress AI-Powered Extensions for WinForms&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;
    AI-Powered Smart Paste
&lt;/h3&gt;

&lt;p&gt;
    Smart Paste is an AI-ready feature that transforms traditional copy-paste operations.&amp;nbsp;Designed to improve productivity, Smart Paste analyses copied content&amp;nbsp;and intelligently assigns correct&amp;nbsp;values to appropriate fields/row cells in the DevExpress Data Grid and Layout Control-powered forms.
&lt;/p&gt;

&lt;p&gt;
    When Smart Paste is activated, the &amp;quot;Smart Paste&amp;quot; command is automatically added to a control&amp;#39;s popup menu. When a user copies data from a source (such as a spreadsheet, document, or web page) and pastes it into a Data Grid or Layout Control-powered form, Smart Paste automatically interprets content and maps the data to the correct data fields or cells.
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/smart-paste-layoutcontrol.gif" alt="AI-driven Smart Paste - DevExpress WinForms Layout Control" style="width:888px;"&gt;

&lt;p&gt;
    Review the following help topic for additional information and examples, including how to register an AI-related client and configure Smart Paste behaviors: &lt;a href="https://docs.devexpress.com/WindowsForms/405152/ai-powered-extensions/smart-paste?v=24.2" target="_blank"&gt;AI-powered Smart Paste&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
    AI-Powered&amp;nbsp;Smart Search
&lt;/h3&gt;

&lt;p&gt;
    DevExpress WinForms Ribbon and Accordion controls now support AI-powered smart search. Smart Search works alongside traditional search algorithms to deliver a more powerful and user-friendly search experience.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;
    When the user pauses text entry in the search field (within the Ribbon or Accordion control), the control sends the current search query to an AI service that understands context, synonyms, and user intent beyond exact keyword matches. Once the AI service returns results, the control filters items accordingly.
&lt;/p&gt;

&lt;iframe width="780" height="496" src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-ribbon-smart-search.mp4" allowfullscreen="" style="width:780px;"&gt;&lt;/iframe&gt;

&lt;h3&gt;
    AI-Powered Text Processing
&lt;/h3&gt;

&lt;p&gt;
    NLP-powered text transform extensions (behaviors) allow you to enhance the way users interact with and manage text content. These extensions leverage advanced natural language processing (NLP) technologies to provide automated, intelligent text manipulation capabilities directly within your Windows Forms applications.
&lt;/p&gt;

&lt;p&gt;
    AI-powered text transform extensions include:
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Expand&lt;/li&gt;
  &lt;li&gt;Explain&lt;/li&gt;
  &lt;li&gt;Explain Formular (in the Spreadsheet control)&lt;/li&gt;
  &lt;li&gt;Shorten&lt;/li&gt;
  &lt;li&gt;Summarize&lt;/li&gt;
  &lt;li&gt;Adjust Tone&lt;/li&gt;
  &lt;li&gt;Proofread&lt;/li&gt;
  &lt;li&gt;Rewrite&lt;/li&gt;
  &lt;li&gt;Translate&lt;/li&gt;
  &lt;li&gt;Ask AI (Custom Prompt)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    AI-powered text transform extensions can be used in&amp;nbsp;the following DevExpress WinForms controls:
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;MemoEdit&lt;/li&gt;
    &lt;li&gt;Rich Text Editor&lt;/li&gt;
    &lt;li&gt;Spreadsheet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To add this capability in your DevExpress-powered WinForms app, simply drop the DevExpress Behavior Manager component from the Toolbox onto a Form, add required AI-powered text transform behaviors in the Behavior Editor, attach behaviors to DevExpress controls, and configure behavior settings as needed:
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-ai-driven-behaviors.png" alt="AI-Powered Text Transform Behaviors" style="width:734px;"&gt;

&lt;p&gt;
    Run the application, select text, invoke the popup menu, and click the appropriate AI-related command. AI will process the command and generate&amp;nbsp;an answer. The AI-generated answer will be displayed within a dialog.
&lt;/p&gt;

&lt;p&gt;
    You can  insert the answer directly into a document or text field with a single click. You can insert the&amp;nbsp;answer above/below selected text or cursor, replace all content or selected text, or copy the answer to the clipboard.
&lt;/p&gt;

&lt;iframe width="780" height="610" src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-richedit-ai-driven-text-processing.mp4" allowfullscreen="" style="width:780px;"&gt;&lt;/iframe&gt;

&lt;p&gt;
    &lt;code&gt;CustomRequestBehavior&lt;/code&gt; displays an &amp;quot;Ask AI&amp;quot; item in the context menu. &amp;quot;Ask AI&amp;quot; invokes a dialog and allows users to directly interact with an AI-powered assistant. A user can enter a question or prompt. The AI assistant will process the query and generate an answer. 
&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-richtexteditor-ask-ai.png" alt="Ask AI in DevExpress WinForms Controls" style="width:1019px;"&gt;

&lt;p&gt;
    Review the following help topic for additional information: &lt;a href="https://docs.devexpress.com/WindowsForms/405153/ai-powered-extensions/text-transform?v=24.2" target="_blank"&gt;AI-Powered Text Transform Extensions&lt;/a&gt;.&lt;/p&gt;&lt;h3 id="AI-Powered-Behaviors-in-Rich-Text-and-Spreadsheet-Editors-for-WinForms-and-WPF" style="color:#333333;"&gt;AI-Powered Behaviors in Rich Text and Spreadsheet Editors for WinForms&lt;/h3&gt;&lt;p&gt;Please review the following blog post for more information:&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/office/archive/2024/09/13/office-inspired-controls-winforms-amp-wpf-early-access-preview-v24-2-ai-powered-behaviors-and-accessibility-enhancements.aspx" target="_blank"&gt;Office-Inspired Controls (WinForms &amp;amp; WPF) — Early Access Preview (v24.2) — AI-Powered Behaviors and Accessibility Enhancements&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
    Accessibility and Globalization
&lt;/h2&gt;

&lt;h3&gt;
    Keyboard Navigation between Toolbars
&lt;/h3&gt;

&lt;p&gt;
    Users&amp;nbsp;can now&amp;nbsp;switch between toolbars using the &lt;strong&gt;Ctrl&lt;/strong&gt;+&lt;strong&gt;Tab&lt;/strong&gt; keyboard shortcut.  
&lt;/p&gt;

&lt;p&gt;
    When/if a&amp;nbsp;Main Menu is not included in an application, set the Bar Manager&amp;#39;s &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraBars.BarManager.AllowFocusBarWithoutMainMenu?v=24.2" target="_blank"&gt;AllowFocusBarWithoutMainMenu&lt;/a&gt; property to &lt;strong&gt;true&lt;/strong&gt; to enable keyboard navigation between toolbars.&lt;/p&gt;

&lt;h3 id="Accessibility-Enhancements---Alt-Text-dialogs"&gt;Accessibility Enhancements - Alt Text Dialogs&lt;/h3&gt;
&lt;p&gt;In v24.2, we implemented new AI-Powered Alt Text dialogs for WinForms Rich Text Editors and Spreadsheet Controls.&lt;br&gt;The Alt Text dialog allows you to set accessible descriptions for shape objects in Word and Excel documents or mark non-informative document graphics as&amp;nbsp;&lt;code&gt;Decorative&lt;/code&gt;&amp;nbsp;(this setting allows screen readers to ignore decorative graphics when scanning documents).&lt;br&gt;In addition, you can use the Alt Text dialog to generate the meaningful descriptions for document images using the power of the AI behavior. To enable this functionality, follow the steps from the previous section of the current blog post to register the AI service and then, attach the&amp;nbsp;&lt;code&gt;DevExpress.AIIntegration.WinForms.GenerateDescriptionBehavior&lt;/code&gt;&amp;nbsp;behavior for RichEditControl or SpreadsheetControl in a&amp;nbsp;&lt;strong&gt;WinForms&lt;/strong&gt;&amp;nbsp;application.&lt;/p&gt;
&lt;div class="Note"&gt;
The Generate button is disabled if the GenerateDescriptionBehavior isn&amp;#39;t registed for Rich Text Editor or Spreadsheet Control. Descriptions can be generated only for document images. The Generate option is disabled when a shape or chart object is selected.
&lt;/div&gt;
&lt;p&gt;The new built-in dialogs are available from the shape’s context menu. To activate the Alt Text dialog, select a document shape, or image, or chart, open the context menu and click the “View Alt Text…” context menu item.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/office/v24.2/alttext_rich.png" alt=""&gt;&lt;/p&gt;

&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;
    WinForms Scheduler Enhancements
&lt;/h2&gt;

&lt;h3&gt;
    Reminder Form – New &amp;#39;RemindersFormAction&amp;#39; Event 
&lt;/h3&gt;

&lt;p&gt;
    This EAP ships with a new WinForms Scheduler&amp;nbsp;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraScheduler.SchedulerControl.RemindersFormAction?v=24.2"&gt;RemindersFormAction&lt;/a&gt; event. The event occurs when a user clicks the Dismiss, Dismiss All, or Snooze button&amp;nbsp;on Reminders Forms (or if the user closes the form).&lt;/p&gt;

&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-scheduler-riminder-form.png" alt="Reminder Form - WinForms Scheduler, DevExpress" style="width:539px;"&gt;

&lt;p&gt;
    Use the &lt;code&gt;e.ActionType&lt;/code&gt; event parameter to obtain the user action that triggered the event. For example, you can display personalized notifications when users take specific actions, or you can cancel the default action by setting the &lt;code&gt;e.Handled&lt;/code&gt; parameter to &lt;strong&gt;true&lt;/strong&gt; and execute custom logic as necessary. 
&lt;/p&gt;

&lt;h3&gt;
    Resources Tree – Auto-Populate Columns
&lt;/h3&gt;

&lt;p&gt;
    Once the Resources Tree component is added to a Form that includes a DevExpress Scheduler control, the Resources Tree component automatically generates columns based on &lt;a href="https://docs.devexpress.com/WindowsForms/17133/controls-and-libraries/scheduler/data-binding/mappings/resource-mappings" target="_blank"&gt;resource mappings&lt;/a&gt; configured in the underlying data storage. This enhancement reduces manual setup and ensures that the Resources Tree immediately reflects the resource structure defined for the schedule.
&lt;/p&gt;

&lt;p&gt;This EAP also includes a &amp;quot;Generate Columns&amp;quot; command in the Resources Tree&amp;#39;s smart tag menu. This command allows you to quickly refresh columns. It clears existing columns and repopulates them based on resource mappings.
&lt;/p&gt;

&lt;p&gt;
    To enhance runtime flexibility, we also added a&amp;nbsp;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraScheduler.UI.ResourcesTree.PopulateColumns?v=24.2"&gt;PopulateColumns&lt;/a&gt; method. This method auto-generates Resources Tree&amp;nbsp;columns. The &lt;code&gt;PopulateColumns&lt;/code&gt; method clears the &lt;code&gt;ResourcesTree.Columns&lt;/code&gt; collection, creates new columns, binds them to corresponding data fields, and adds columns to the collection.&lt;/p&gt;

&lt;h2&gt;WinForms Report Viewer and Designer&lt;/h2&gt;
&lt;h3 id="new-aztec-barcode"&gt;New Aztec Barcode&lt;/h3&gt;
&lt;p&gt;We extended barcode  support and now allow you to generate the Aztec code. Aztec barcodes offer a compact/efficient way to encode large amounts of data without requiring a quiet zone, making them ideal for space-constrained documents. &lt;/p&gt;
&lt;p&gt;To create the Aztec Barcode, set the &lt;code&gt;XRBarCode.Symbology&lt;/code&gt; property value to &lt;code&gt;AztecCode&lt;/code&gt; and specify appropriate barcode properties: &lt;/p&gt;
&lt;img class="small" src="https://community.devexpress.com:443/blogs/reporting/2024/eap24-2/reporting-aztec-code.png" alt="DevExpress Report Designer — Aztec Barcode" style="width:520px;height:340px;"&gt;
&lt;p&gt;You can also specify barcode data using &lt;code&gt;Text&lt;/code&gt; or &lt;code&gt;BinaryData&lt;/code&gt; properties as follows: &lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.XtraPrinting.BarCode;
using DevExpress.XtraReports.UI;
// ...

XRBarCode barCode = new XRBarCode();
barCode.Symbology = new AztecCodeGenerator();
barCode.Text = &amp;quot;YourData&amp;quot;;
//OR
//barCode.BinaryData = GetAztecCodeData();
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="new-micro-qr-code"&gt;New Micro QR Code&lt;/h3&gt;
&lt;p&gt;You can now create &lt;a target="_blank" href="https://en.wikipedia.org/wiki/QR_code"&gt;Micro QR Codes&lt;/a&gt;&amp;nbsp;(a smaller alternative to traditional QR Codes). Micro QR Codes are&amp;nbsp;suitable for space-limited documents, where only small amounts of data (35 characters or 128 bits) require encoding. &lt;/p&gt;
&lt;p&gt;To create a Micro QR Code, set the &lt;code&gt;XRBarCode.Symbology&lt;/code&gt; property value to &lt;code&gt;MicroQRCode&lt;/code&gt; and specify appropriate barcode properties: &lt;/p&gt;
&lt;img class="small" src="https://community.devexpress.com:443/blogs/reporting/2024/eap24-2/reporting-micro-qr-code.png" alt="DevExpress Report Designer — Micro QR Code" style="width:452px;height:336px;"&gt;
&lt;p&gt;You can also specify barcode data using &lt;code&gt;Text&lt;/code&gt; or &lt;code&gt;BinaryData&lt;/code&gt; properties as follows: &lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.XtraPrinting.BarCode;
using DevExpress.XtraReports.UI;
// ...

XRBarCode barCode = new XRBarCode();
barCode.Symbology = new MicroQRCodeGenerator();
barCode.Text = &amp;quot;123ABC&amp;quot;;
//OR
//barCode.BinaryData = GetMicroCodeData();
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id="html-export--preserve-rotated-text"&gt;HTML Export — Preserve Rotated Text&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;XRLabel&lt;/code&gt; control now preserves  text rotation defined by its &lt;a target="_blank" href="https://docs.devexpress.com/XtraReports/DevExpress.XtraReports.UI.XRLabel.Angle?v=24.2"&gt;&lt;code&gt;Angle&lt;/code&gt;&lt;/a&gt; property (supported angles are 90 degrees, 180 degrees, and 270 degrees, and their negative counterparts) when exporting reports to HTML files. &lt;/p&gt;
&lt;h3 id="pdf-export--export-bookmarks"&gt;PDF Export — Export Bookmarks&lt;/h3&gt;
&lt;p&gt;The new &lt;a target="_blank" href="https://docs.devexpress.com/CoreLibraries/DevExpress.XtraPrinting.PdfExportOptions.ExportBookmarks?v=24.2"&gt;&lt;code&gt;PdfExportOptions.ExportBookmarks&lt;/code&gt;&lt;/a&gt; property allows you to control bookmark visibility in exported PDF documents. &lt;/p&gt;
&lt;h3 id="resolve-missing-fonts"&gt;Resolve Missing Fonts&lt;/h3&gt;
&lt;p&gt;We added a new &lt;code&gt;DXFontRepository.QueryNotFoundFont&lt;/code&gt; event&amp;nbsp;for fonts used within a document&amp;nbsp;but missing in an application’s hosting environment. This feature allows you to identify and resolve missing fonts by adding them to  &lt;code&gt;DXFontRepository&lt;/code&gt; before document generation begins (using the &lt;code&gt;e.FontFileData&lt;/code&gt; event argument). In the following code snippet, we use Google Fonts to locate/add&amp;nbsp;fonts to &lt;code&gt;DXFontRepository&lt;/code&gt; :&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;DXFontRepository.QueryNotFoundFont+= QueryNotFoundFont;

void QueryNotFoundFont(object sender, NotFoundFontEventArgs e) {
    var service = new FontCollectorService();
    var fontData = service.ProcessFont(e.RequestedFont).Result;
    e.FontFileData = fontData;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With this enhancement, you will be able to identify and address document appearance issues, ensuring that reports appear as designed, regardless of the hosting platform.  &lt;/p&gt;
&lt;p&gt;Our components will also log font names in the application output for debugging purposes. Please review the following example for additional information: &lt;a target="_blank" href="https://github.com/DevExpress-Examples/reporting-winforms-load-missing-fonts-from-google"&gt;Reporting for WinForms - Add missing fonts into DXFontRepository from Google&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;Duplicate Conditional Formatting Rules in WinForms Data-Bound Controls&lt;/h2&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/115548/controls-and-libraries/data-grid/appearance-and-conditional-formatting?v=24.2#duplicate-conditional-formatting-rule-in-grid-menu" target="_blank"&gt;Duplicate Rules&lt;/a&gt;&amp;nbsp;allows you to duplicate existing conditional formatting rules at both runtime and design time (to simplify&amp;nbsp;reuse&amp;nbsp;or modify&amp;nbsp;rules without recreating&amp;nbsp;them from scratch).&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;quot;Duplicate Rules&amp;quot; is available in&amp;nbsp;the following DevExpress WinForms controls:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Data Grid&lt;/li&gt;&lt;li&gt;PivotGrid&lt;/li&gt;&lt;li&gt;TreeList&lt;/li&gt;&lt;li&gt;Vertical Grid&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You can use the Visual Studio Designer to duplicate existing rules with just a few clicks. This makes it easier to create variations of conditional formatting rules for different columns/rows/fields.&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-grid-duplicate-conditional-formatting-rule-design-time.png" alt="Duplicate Conditional Formatting Rules at Design Time - DevExpress WinForms Data Grid"&gt;&lt;p&gt;And yes, users can also duplicate conditional format rules at runtime:&lt;/p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/winforms-grid-duplicate-conditional-formatting-rule-runtime.png" alt="Duplicate Conditional Formatting Rules at Runtime - DevExpress WinForms Data Grid"&gt;

&lt;h2&gt;Security Enhancements&lt;/h2&gt;&lt;h3&gt;Environment Policy
&lt;/h3&gt;

&lt;p&gt;
    We added&amp;nbsp;a new Environment Policy that allows you to apply global environment access restrictions, track app-initiated requests (initiated by a DevExpress UI control) and execute custom actions in response.
&lt;/p&gt; 

&lt;p&gt;
    You can apply global restrictions using various methods like &lt;code&gt;SuppressAll()&lt;/code&gt; to block all environment access or more specific options such as preventing DevExpress UI controls from reading or writing environment variables, exiting processes, altering the current directory, or reading paths to system special folders. 
&lt;/p&gt;

&lt;p&gt;
    Event handlers allow you to track and manage environment operations. For example, you can detect when DevExpress UI controls attempt to read or modify environment variables, process data, or system directories and enable conditional responses based on specific conditions. 
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://docs.devexpress.com/GeneralInformation/405085/security/environment-policy?v=24.2" target="_blank"&gt;Documentation&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
    Registry Access Policy
&lt;/h3&gt;

&lt;p&gt;
    DevExpress UI controls can save, read, and modify configuration settings and options in the system registry. These requests can be initiated in  code or through the internal control engine. The Registry Access Policy allows you to apply global registry access restrictions, track user/app-initiated requests, and execute custom actions in response.
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://docs.devexpress.com/CoreLibraries/DevExpress.Data.Utils.RegistryAccessPolicy?v=24.2" target="_blank"&gt;Documentation&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p&gt;We value your thoughts/feedback. Please take a minute to respond to the following question and let us know how we can best serve your WinForms-related development needs now and into the future:&amp;nbsp;&lt;/p&gt;&lt;div data-survey-id="a3570f5e-d571-4a65-bb09-a2e82c81bd06" data-survey-auth-required="false"&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;If you have yet to review the features/capabilities introduced in our most recent major update (&lt;/span&gt;&lt;strong&gt;v24.1&lt;/strong&gt;&lt;span&gt;), please&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/" target="_blank"&gt;visit the following webpage&lt;/a&gt;&lt;span&gt;&amp;nbsp;and let us know what you think of this release by responding to&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#winforms-survey" target="_blank"&gt;our online WinForms v24.1 survey&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;br&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 17 Sep 2024 18:48:00 Z</pubDate>
      <dc:creator>Bogdan Kharchenko (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388170</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2024/07/23/winforms-year-end-roadmap-v24-2.aspx</link>
      <category domain="https://community.devexpress.com/Tags/.NET">.NET</category>
      <category domain="https://community.devexpress.com/Tags/.net+8">.net 8</category>
      <category domain="https://community.devexpress.com/Tags/.NET+9">.NET 9</category>
      <category domain="https://community.devexpress.com/Tags/.NET+Core">.NET Core</category>
      <category domain="https://community.devexpress.com/Tags/2024">2024</category>
      <category domain="https://community.devexpress.com/Tags/accessibility">accessibility</category>
      <category domain="https://community.devexpress.com/Tags/localization">localization</category>
      <category domain="https://community.devexpress.com/Tags/roadmap">roadmap</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <title>WinForms — Year-End Roadmap (v24.2)</title>
      <description>&lt;p&gt;This blog post outlines some of our WinForms-related development plans for the second half of 2024&amp;nbsp;(v24.2). As you will read below, key focus areas will be .NET Core UX, AI, and Accessibility. &lt;/p&gt;&lt;div&gt;&lt;div class="Note"&gt;&lt;span&gt;The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This roadmap and the features/products listed within it are subject to change. You should not rely on or use this information to help make a purchase decision about Developer Express Inc products.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2 id="-net-8-support"&gt;.NET Core / .NET &lt;/h2&gt;&lt;h3 id="-net-8-support"&gt;.NET 9&amp;nbsp;Support&lt;/h3&gt;&lt;p&gt;We will support .NET 9&amp;nbsp;across our&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/controls/winforms/" target="_blank"&gt;WinForms product line&lt;/a&gt;&amp;nbsp;(v24.2 and v24.1)&amp;nbsp;after November 2024. Currently, we support the most recent .NET 9 preview builds for those using v24.1 (early adopter testing). If you&amp;#39;re wondering what lies ahead for the WinForms platform itself, be sure to check out the following Microsoft presentation from Build 2024:&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=v4_D9j9mU3k" target="_blank"&gt;What&amp;#39;s New with WinForms in .NET 9&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;.NET 8, .NET Framework 4.6.2, Visual Studio 2019&amp;nbsp;Will Be Minimally Supported Versions for DevExpress Libraries (v24.2+)&lt;/h3&gt;&lt;p&gt;Learn more about this global change in&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/07/08/net-net-8-and-net-framework-4-6-2-are-minimally-supported-target-frameworks-for-devexpress-libraries-in-v24-2.aspx" target="_blank"&gt;this announcement&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Source Code Builder Enhancements&lt;/h3&gt;&lt;p&gt;In v24.2, we will simplify&amp;nbsp;procedures used&amp;nbsp;to&amp;nbsp;&lt;a href="https://docs.devexpress.com/GeneralInformation/403678/source-code/rebuild-assemblies-from-source-code"&gt;rebuild assemblies from source code&lt;/a&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Our source builder tool will ship in the DevExpress Unified Component Installer.&lt;/li&gt;&lt;li&gt;Our source builder tool will be more stable (we added more internal tests for the rebuild process on our build farm) and will require fewer steps to initiate/complete source rebuild.&lt;/li&gt;&lt;li&gt;It will be easier to rebuild .NET Core/.NET projects (currently, it is a manual process) and generate the corresponding NuGet packages (including the localization packages).&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Easier Upgrade to .NET from .NET Framework&lt;/h3&gt;&lt;p&gt;&lt;span&gt;We&amp;nbsp;expect to improve integration with Microsoft&amp;#39;s .NET Upgrade Assistant Tool. We also expect to offer&amp;nbsp;&lt;a href="https://devblogs.microsoft.com/dotnet/announcing-api-map-support-for-ua/" target="_blank"&gt;predefined mappings&lt;/a&gt; for appropriate DevExpress packages (allowing Microsoft&amp;#39;s tool to map DevExpress assembly references to corresponding DevExpress NuGet package references).&amp;nbsp;If &lt;span&gt;.NET Upgrade Assistant Tool&amp;nbsp;&lt;/span&gt;mappings fail to meet our expectations, we will make necessary changes to the DevExpress Project Converter instead.&amp;nbsp;&lt;/span&gt;NOTE: We will remove the&amp;nbsp;&lt;a href="https://docs.devexpress.com/WindowsForms/401191/dotnet-core-support#upgrade-net-framework-applications" target="_blank"&gt;old DevExpress .NET Core Migration Tool&lt;/a&gt; in our v24.2 release cycle (because of the&amp;nbsp;aforementioned changes).&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/image(8).png" alt="" style="width:890px;height:634px;"&gt;&lt;h3&gt;Enhanced UX with the WinForms .NET Core Designer&lt;/h3&gt;&lt;p&gt;As you may already know from &lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/03/18/winforms-performance-enhancements-in-the-microsoft-winforms-designer-for-net-6-development.aspx" target="_blank"&gt;my earlier&amp;nbsp;post&lt;/a&gt;, we continue our collaboration&amp;nbsp;with Microsoft (reporting issues and suggestions, testing new implementations, etc.) to make the .NET Core design-time experience better than that of the .NET Framework.&amp;nbsp;&lt;span&gt;Microsoft is also very serious about the WinForms .NET Core designer experience and we are ready to review issues together in a timely manner.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;For v24.2, we expect to address a&amp;nbsp;few usability and stability-related issues. We encourage you to report any issue you encounter when using our UI components alongside the&amp;nbsp;WinForms .NET Core designer&amp;nbsp;(submit support tickets&amp;nbsp;&lt;a href="https://devexpress.com/ask" target="_blank"&gt;via the Support Center&lt;/a&gt;). &lt;/p&gt;&lt;h3&gt;&lt;span&gt;Additional DateOnly and TimeOnly Enhancements&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;We first&amp;nbsp;introduced support for DateOnly/TimeOnly .NET types in our v24.1 release cycle (&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#winforms-dateonly-support" target="_blank"&gt;learn more&lt;/a&gt;&lt;span&gt;).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;With v24.2, we will add the following enhancements to our current implementation:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;Support TimeOnly in our &lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraEditors.TimeEdit" target="_blank"&gt;TimeEdit&lt;/a&gt; component.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Support&amp;nbsp;&lt;/span&gt;TimeOnly-specific&amp;nbsp;criteria functions like IsAfternoon, InMorning, InEvening in criteria language and UI components.&lt;/li&gt;&lt;li&gt; Support more TimeOnly operations at the filtering UI-level, for example, a range filter instead of tree&amp;nbsp;and&amp;nbsp;smart equality (with second&amp;nbsp;rounding).&lt;/li&gt;&lt;/ul&gt;&lt;p id="keyboard-focus-and-navigation"&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/image(10).png" alt="" class="small" style="width:500px;height:452px;"&gt;&lt;/p&gt;&lt;p id="keyboard-focus-and-navigation"&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/image(11).png" alt="" class="small" style="width:600px;height:381px;border-color:#c0c0c0;border-style:solid;"&gt;&lt;/p&gt;&lt;p id="keyboard-focus-and-navigation"&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/image(12).png" alt="" class="small" style="width:500px;height:525px;"&gt;&lt;br&gt;&lt;/p&gt;&lt;h3 id="accessibility-and-ui-automation"&gt;Enhanced Project and Item Templates for .NET Core / .NET&lt;/h3&gt;&lt;p&gt;In our upcoming release, we will add more .NET Core-based templates and also update all template code to follow .NET best practices. While we cannot make guarantees, we hope to add a&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=JDu2Q8nGfwE" target="_blank"&gt;Blazor Hybrid&lt;/a&gt;-powered project template with DevExpress WinForms and Blazor UI components, Dependency Injection (DI) support, etc. &lt;/p&gt;&lt;p&gt;Our DevExpress Template Gallery may undergo internal changes as well, because we utilize&amp;nbsp;CLI templates more and more under the hood across a variety of DevExpress products (due to the popularity of .NET Core and NuGet). In general, CLI templates offer more opportunities for us to support VS Code and Rider IDE by reusing the same template code (a common denominator for various IDEs and operating systems). CLI templates are also easier to test/evolve in the long run.&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/image(9).png" alt="" style="border-width:0 1px 1px 0;border-color:#c0c0c0;border-style:solid;"&gt;&lt;h3&gt;Guidance on New Desktop Development Standards&lt;/h3&gt;&lt;p style="color:#242424;"&gt;&lt;span&gt;As you may recall from &lt;a href="https://community.devexpress.com/blogs/news/archive/2024/02/09/modern-desktop-apps-and-their-complex-architectures.aspx" target="_blank"&gt;an earlier post&lt;/a&gt;, we want to help guide our loyal WinForms/WPF/VCL/.NET MAUI/XAF customers through new/tightened security requirements (and associated complexities) for Windows desktop application development. For context, here are the main points from our overview post:&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li style="color:#242424;"&gt;&lt;span&gt;Separation of backend and frontend logic has changed: Where simple structures like client/server used to be the norm, distributed systems of varying complexity are typical today.&lt;/span&gt;&lt;/li&gt;&lt;li style="color:#242424;"&gt;&lt;span&gt;For data persistence, the number of commonly used options has increased: It now includes NoSQL solutions as well as distributed structures such as Event Sourcing backends.&lt;/span&gt;&lt;/li&gt;&lt;li style="color:#242424;"&gt;&lt;span&gt;UI apps need to take new architectural concerns into account and work asynchronously, which creates technical challenges for developers (for instance, to consume external AI or Web API services).&amp;nbsp;If you watched&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=v4_D9j9mU3k" target="_blank"&gt;What&amp;#39;s New with WinForms in .NET 9?&lt;/a&gt;&lt;span style="color:#404040;"&gt;&amp;nbsp;from Build 2024, you will also know that async programming or MVVM are&amp;nbsp;no longer specific to ASP.NET Core or WPF apps - both concepts are&amp;nbsp;becoming `a first-class citizen` in WinForms. Accessibility has also become a non-optional requirement for many today.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span&gt;For more information, see our first post in the series:&amp;nbsp;&lt;/span&gt;&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/07/18/winforms-connect-a-net-desktop-client-to-a-secure-backend-with-the-devexpress-web-api-service-ef-core-with-odata.aspx"&gt;WinForms&amp;nbsp;— Connect a .NET Desktop Client to a Secure Backend Web API Service (EF Core with OData)&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;h2 id="accessibility-and-ui-automation"&gt;Accessibility and Globalization&amp;nbsp;&lt;/h2&gt;&lt;h3&gt;Final Accessibility and UI Automation Enhancements&lt;/h3&gt;&lt;p&gt;As you know, we extended accessibility support in our v24.1 release cycle (&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#winforms-accessibility" target="_blank"&gt;learn more&lt;/a&gt;). &lt;/p&gt;&lt;p&gt;We expect to finalize our accessibility-related initiatives in our v24.2 release cycle:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fix remaining accessibility-related issues from our prioritized list. &lt;/li&gt;&lt;li&gt;Keyboard navigation between menu bars in BarManager&lt;/li&gt;&lt;li&gt;Extend keyboard support in the DevExpress WinForms TreeList (to help navigate and&amp;nbsp;expand/collapse nodes). &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Accessibility Enhancements for WinForms PDF Viewer&amp;nbsp;&lt;/h3&gt;&lt;p&gt;&lt;span&gt;We continue to enhance the accessibility support for desktop document viewers. In the next release cycle, we will introduce screen reader support for WinForms PDF Viewer. With this functionality, you will be able to read the contents in Accessible PDF documents (based on their tagged structure).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 id="localization"&gt;German Localization Enhancements&lt;/h3&gt;&lt;p&gt;As you may recall, we introduced new .NET localization APIs and UI client&amp;nbsp;in our v23.2 release cycle (&lt;a href="https://www.devexpress.com/subscriptions/new-2023-2.xml#localization" target="_blank"&gt;learn more&lt;/a&gt;). At present, our&amp;nbsp;&lt;a href="https://localization.devexpress.com/" target="_blank"&gt;Localization Service&lt;/a&gt;&amp;nbsp;contains&amp;nbsp;translations/resources compiled by the DevExpress developer community and thus these translations/resources may be inaccurate and/or incomplete.&lt;/p&gt;&lt;p&gt;In v24.2, we want to leverage our new API and tools to improve German localization resources for consistency/accuracy. In particular, we will remove duplicates, incomplete strings with missing/extra spaces, and review remaining strings as needed. Our ultimate goal is to provide the best possible translation for the German language&amp;nbsp;(other popular languages and products&amp;nbsp;may follow in future versions).&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/image(7).png" alt=""&gt;&lt;p&gt;  &lt;/p&gt;&lt;h2 id="new-ai-powered-enhancements"&gt;Artificial Intelligence (AI)&lt;/h2&gt;&lt;h3 id="new-ai-powered-enhancements"&gt;Smart/AI-Powered Functions in our WinForms Data Grid and Editors &lt;/h3&gt;&lt;p&gt; We expect to make it easier&amp;nbsp;to integrate smart/AI-powered functions across a variety of DevExpress WinForms UI components. AI-related integrations may include the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Core libraries for WinForms, WPF, Blazor, JS and other platforms to easily integrate and&amp;nbsp;&lt;span&gt;access AI features within your project. &lt;span&gt;To leverage these capabilities, you will need to&amp;nbsp;&lt;/span&gt;&lt;strong&gt;use your own&lt;/strong&gt;&lt;span&gt;&amp;nbsp;Microsoft Azure Open AI API key or use offline&amp;nbsp;open-source models powered by&amp;nbsp;&lt;/span&gt;&lt;a href="https://learn.microsoft.com/en-us/windows/ai/models" target="_blank" title="Use Machine Learning models in your Windows app"&gt;Ollama and/or Onnx Runtime&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;AI Prompt/Chat to enable&amp;nbsp;end-user&amp;nbsp;communication with chat bots and other AI services for your DevExpress-powered WinForms app.&lt;/li&gt;&lt;li&gt;Various AI-powered functions such as smart search (&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/06/04/winforms-how-to-integrate-semantic-similarity-search-in-the-grid-control-powered-by-smartcomponents-local-embeddings.aspx" target="_blank"&gt;example&lt;/a&gt;)&amp;nbsp;within the DevExpress WinForms Data Grid, auto-complete and smart paste in our WinForms Memo (and other WinForms Text Editors), and AI-powered context-dependent&amp;nbsp;menus.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/Smart_AI_Filter_iHEYORqKb0.gif" alt=""&gt;&lt;/p&gt;&lt;h3 id="new-ai-powered-enhancements"&gt;Smart / AI-Powered Functions in Office-inspired&amp;nbsp;Components for WinForms&lt;/h3&gt;&lt;p&gt;&lt;span&gt;We will integrate AI-Powered features into our WinForms and WPF Rich Text and Spreadsheet components. These enhancements will allow users to quickly understand the underlying essence of individual&amp;nbsp;documents via Generative AI summaries and translate documents to a&amp;nbsp;preferred language using AI-powered translations. In addition, we plan to give you the ability to describe images used within Office documents using AI-powered APIs.&lt;/span&gt;&lt;/p&gt;&lt;h3 id="new-ai-powered-enhancements"&gt;Smart / AI-Powered Functions in Report Viewer for WinForms&lt;/h3&gt;&lt;p&gt;We will integrate AI-Powered&amp;nbsp;&lt;strong&gt;Summarize&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;Translate&lt;/strong&gt;&amp;nbsp;features into our Report Viewer components. These enhancements will allow users to quickly&amp;nbsp;understand/analyze core insights associated with a given report (using&amp;nbsp;Generative AI summaries) and convert report documents to a desired language with AI-powered translation tools.&lt;/p&gt;&lt;h2 id="spreadsheet-document-api-and-spreadsheet-ui-controls-for-winforms-and-wpf"&gt;Reporting, Scheduler&amp;nbsp;and Other Office-Inspired UI&amp;nbsp;Components&lt;/h2&gt;&lt;h3 id="use-theme-palette-colors-in-xaml"&gt;Report Viewer and Designer for WinForms&lt;/h3&gt;&lt;h4 id="dateonlytimeonly-support"&gt;DateOnly &amp;amp; TimeOnly Support&lt;/h4&gt;&lt;p&gt;We will introduce support for&amp;nbsp;&lt;code style="color:#303030;"&gt;DateOnly&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code style="color:#303030;"&gt;TimeOnly&lt;/code&gt;&amp;nbsp;values across DevExpress Reports. This update will allow you to utilize the aforementioned types when:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;creating expression bindings&lt;/li&gt;&lt;li&gt;report and query parameters&lt;/li&gt;&lt;li&gt;calculated fields&lt;/li&gt;&lt;li&gt;and when sorting, grouping, and filtering data.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Refer to the&amp;nbsp;&lt;a target="_blank" href="https://www.devexpress.com/subscriptions/whats-new/#devexpress-dateonly-timeonly-support"&gt;What&amp;#39;s New in v24.1&lt;/a&gt;&amp;nbsp;to learn more about recent enhancements in this particular space.&lt;/p&gt;&lt;h4 id="report-designer--dimension-notations"&gt;Report Designer — Dimension Notations&lt;/h4&gt;&lt;p&gt;To simplify the report design process, v24.2 will introduce dimension notations within the DevExpress Report Designer. When you resize controls, the designer will provide precise visual feedback and display dimension notations based on a specified&amp;nbsp;&lt;code style="color:#303030;"&gt;ReportUnit&lt;/code&gt;&amp;nbsp;property value (such as inches, centimeters, or pixels).&lt;/p&gt;&lt;h4 id="new-barcode-types--aztec--micro-qr-code"&gt;New Barcode Types — Aztec &amp;amp; Micro QR Code&lt;/h4&gt;&lt;p&gt;Our next major update will support the following Barcode types:&amp;nbsp;&lt;strong&gt;Aztec&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;Micro QR Code&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a target="_blank" href="https://en.wikipedia.org/wiki/Aztec_Code"&gt;Aztec&lt;/a&gt;&amp;nbsp;barcodes offer a compact/efficient way to encode large amounts of data without requiring a quiet zone, making them ideal for space-constrained documents.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a target="_blank" href="https://en.wikipedia.org/wiki/QR_code"&gt;Micro QR Codes&lt;/a&gt;&amp;nbsp;offer a smaller alternative to traditional QR Codes, suitable for space-limited output (where only small amounts of data require encoding).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Scheduler API Enhancements for WinForms&lt;/h3&gt;&lt;p&gt;Based on community feedback, we expect to ship the following DevExpress&amp;nbsp;Scheduler control&amp;nbsp;features in our next major update:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add events for the reminder form&lt;/li&gt;&lt;li&gt;Add Resource Tree columns automatically&lt;/li&gt;&lt;li&gt;Display additional fields within our FlyoutTooltip&lt;/li&gt;&lt;li&gt;Hide specific days within the Scheduler&amp;#39;s DayView&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Word Processing Document API and Rich Text Editor&amp;nbsp;for WinForms&lt;/h3&gt;&lt;h4 id="page-borders"&gt;Page Borders&lt;/h4&gt;&lt;p&gt;Our Word-processing components will support Page Borders within Word documents. You will be able to import and save documents with page borders to supported Word formats without content loss. Page borders will be properly displayed when you preview the document, print it, or export it to the PDF. APIs to manage page borders in code will be also available.&lt;/p&gt;&lt;h4 id="small-caps-formatting-support"&gt;Small Caps Formatting Support&lt;/h4&gt;&lt;p&gt;With v24.2, our Word processing tools will support Small Caps character formatting. Small Caps formatting will be applied when you preview the document inside the UI control and when you print/export to PDF. We will also introduce&amp;nbsp;API settings to manage Small Caps formatting in code (and enhance the Font dialog for our desktop Rich Text Editors (WinForms &amp;amp; WPF)&amp;nbsp;to apply formatting via the UI).&amp;nbsp;&lt;/p&gt;&lt;h3 id="spreadsheet-document-api-and-spreadsheet-ui-controls-for-winforms-and-wpf"&gt;Spreadsheet Document API and Spreadsheet for WinForms&lt;/h3&gt;&lt;div class="Note"&gt;&lt;span style="color:#2b2b2b;"&gt;You need a license for the&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/products/net/office-file-api/" target="_blank"&gt;DevExpress Office File API Subscription&lt;span&gt;﻿&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#2b2b2b;"&gt;&amp;nbsp;or&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;DevExpress Universal Subscription&lt;span&gt;﻿&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#2b2b2b;"&gt;&amp;nbsp;to use the libraries/features listed below in production code.&lt;/span&gt;&lt;/div&gt;&lt;h4 id="dynamic-array-functions"&gt;Dynamic Array Formulas&lt;/h4&gt;&lt;p&gt;Dynamic arrays are a modern and powerful way to work with Excel document formulas. Unlike standard&amp;nbsp;array formulas, which return a single value for each cell with a formula, dynamic array functions return a dynamic array of values (this&amp;nbsp;array of values automatically spills into neighboring cells). Dynamic arrays&amp;nbsp;offer&amp;nbsp;many advantages, including new functions (XLOOKUP, XMATCH, Sort, etc.).&amp;nbsp;&lt;/p&gt;&lt;p&gt;We expect to&amp;nbsp;enhance our formula calculation engine and integrate dynamic arrays&amp;nbsp;into relevant DevExpress Spreadsheet-processing tools. Core functionality will include the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Dynamic array calculations (formulas) and Spill Range support.&lt;/li&gt;&lt;li&gt;New formula error type (#SPILL!).&lt;/li&gt;&lt;li&gt;Spill range reference (# symbol).&lt;/li&gt;&lt;li&gt;Implicit intersection operator (@ symbol) to return a single formula value instead of an array.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h4 id="embed-images-in-cells"&gt;Embed Images in Cells&lt;/h4&gt;&lt;p&gt;Modern versions of Microsoft Excel support a new locate image feature&amp;nbsp;- &amp;quot;Place in Cell&amp;quot; (available from the Insert-&amp;gt;Picture menu). This option&amp;nbsp;gives you the ability to embed an image directly into a cell instead of placing it over worksheet content.&lt;/p&gt;&lt;p&gt;With v24.2, our Spreadsheet Document API library and desktop Spreadsheet UI controls (WinForms &amp;amp; WPF) will ship with &amp;quot;Place in Cell&amp;quot; image placement support. As you would expect, this new feature will allow you to import documents with images embedded in worksheet cells and save these documents to supported Excel formats without the content loss. Embedded cell images will be correctly displayed when you preview workbooks using our&amp;nbsp;desktop Spreadsheet editors (WinForms &amp;amp; WPF) and when you&amp;nbsp;print/export documents to PDF (and of course, we&amp;#39;ll offer new APIs to manage embedded images in&amp;nbsp;code).&lt;/p&gt;&lt;h3 id="pdf-document-api-and-pdf-viewer-for-winforms"&gt;PDF Document API and PDF Viewer for WinForms&lt;/h3&gt;&lt;div class="Note"&gt;&lt;span style="color:#2b2b2b;"&gt;You need a license for the&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/products/net/office-file-api/" target="_blank"&gt;DevExpress Office File API Subscription&lt;span&gt;﻿&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#2b2b2b;"&gt;&amp;nbsp;or&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;DevExpress Universal Subscription&lt;span&gt;﻿&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#2b2b2b;"&gt;&amp;nbsp;to use the libraries/features listed below in production code.&lt;/span&gt;&lt;/div&gt;&lt;h4 id="signature-validation-enhancements"&gt;Signature Validation Enhancements&lt;/h4&gt;&lt;p&gt;v24.2 will ship with enhanced PDF Signature Validation APIs. New capabilities will include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;APIs to verify certificate revocation based on Online Certificate Status Protocol (OCSP) responses.&lt;/li&gt;&lt;li&gt;APIs to verify certificate revocation based on Certificate Revocation List (CRL).&lt;/li&gt;&lt;li&gt;APIs to validate Long Term Validation (LTV) signatures.&lt;/li&gt;&lt;li&gt;APIs to validate Document Level Timestamps.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;h4 id="export-pdf-documents-to-svg"&gt;Export PDF Documents to SVG&lt;/h4&gt;&lt;p&gt;&lt;span&gt;We will finalize &amp;quot;SVG Export&amp;quot; options for our Office File API libraries and extend existing image export APIs for the PDF Document Processor library (to convert PDF file pages to SVG images). This enhancement will&amp;nbsp;allow you to generate vector document previews from PDF files in both Windows and non-Windows environments.&lt;/span&gt;&lt;/p&gt;&lt;h4 id="image-extraction-api"&gt;Image Extraction API&lt;/h4&gt;&lt;p&gt;&lt;span&gt;To improve user experiences when extracting PDF content&amp;nbsp;and analyzing document structure, we plan to enhance our&amp;nbsp;image extraction APIs for the PDF Document API library. With our new APIs, you will be able to obtain additional information about PDF page images and determine image size and location on a page.&lt;/span&gt;&lt;/p&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p style="line-height:26.4px;"&gt;We value your thoughts/feedback. Please take a minute to respond to the following question and let us know how we can best serve your WinForms-related development needs now and into the future:&amp;nbsp;&lt;/p&gt;&lt;div data-survey-id="a3570f5e-d571-4a65-bb09-a2e82c81bd06" data-survey-auth-required="false"&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;If you have yet to review the features/capabilities introduced in our most recent major update (&lt;/span&gt;&lt;strong&gt;v24.1&lt;/strong&gt;&lt;span&gt;), please&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/" target="_blank"&gt;visit the following webpage&lt;/a&gt;&lt;span&gt;&amp;nbsp;and let us know what you think of this release by responding to&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#winforms-survey" target="_blank"&gt;our online WinForms v24.1 survey&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;Thanks,&lt;/span&gt;&lt;br&gt;&lt;span&gt;Dennis Garavsky&lt;/span&gt;&lt;br&gt;&lt;span&gt;Principal Product Manager&lt;/span&gt;&lt;br&gt;&lt;a href="mailto:dennis@devexpress.com?subject=Feedback%20on%20WebAPI%20Experience" title="Email me if you have questions or suggestions"&gt;dennis@devexpress.com&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 23 Jul 2024 02:08:00 Z</pubDate>
      <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388171</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2024/07/17/winforms-connect-a-net-desktop-client-to-a-secure-backend-with-the-devexpress-web-api-service-ef-core-with-odata.aspx</link>
      <category domain="https://community.devexpress.com/Tags/.NET">.NET</category>
      <category domain="https://community.devexpress.com/Tags/access+control">access control</category>
      <category domain="https://community.devexpress.com/Tags/ASP.NET">ASP.NET</category>
      <category domain="https://community.devexpress.com/Tags/authentication">authentication</category>
      <category domain="https://community.devexpress.com/Tags/authorization">authorization</category>
      <category domain="https://community.devexpress.com/Tags/EF">EF</category>
      <category domain="https://community.devexpress.com/Tags/EFCore">EFCore</category>
      <category domain="https://community.devexpress.com/Tags/Entity+Framework">Entity Framework</category>
      <category domain="https://community.devexpress.com/Tags/odata">odata</category>
      <category domain="https://community.devexpress.com/Tags/rbac">rbac</category>
      <category domain="https://community.devexpress.com/Tags/security">security</category>
      <category domain="https://community.devexpress.com/Tags/web+api">web api</category>
      <category domain="https://community.devexpress.com/Tags/webapi">webapi</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <category domain="https://community.devexpress.com/Tags/XAF">XAF</category>
      <title>WinForms — Connect a .NET Desktop Client to a Secure Backend Web API Service (EF Core with OData)</title>
      <description>&lt;div&gt;
&lt;h2&gt;Series Overview&lt;/h2&gt;
&lt;p&gt;As you may recall from &lt;a href="https://community.devexpress.com/blogs/news/archive/2024/02/09/modern-desktop-apps-and-their-complex-architectures.aspx" target="_blank"&gt;an earlier post&lt;/a&gt;&amp;nbsp;(Modern Desktop Apps And Their Complex Architectures), we want to help guide our loyal WinForms/WPF/VCL/.NET MAUI/XAF customers through new/tightened security requirements (and associated complexities) for Windows desktop application development. For context, here are the main points from our overview post:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Separation of backend and frontend logic has changed: Where simple structures like client/server used to be the norm, distributed systems of varying complexity are typical today.&lt;/li&gt;&lt;li&gt;For data persistence, the number of commonly used options has increased: It now includes NoSQL solutions as well as distributed structures such as Event Sourcing backends.&lt;/li&gt;&lt;li&gt;UI apps need to take new architectural concerns into account and work asynchronously, which creates technical challenges for developers.&lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Table of Contents&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/02/09/modern-desktop-apps-and-their-complex-architectures.aspx" target="_blank" rel="nofollow noreferrer"&gt;Intro — Modern Desktop Apps And Their Complex Architectures&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/mobile/archive/2024/05/02/choosing-a-framework-and-app-architecture-for-desktop-and-mobile-cross-platform-apps.aspx" target="_blank"&gt;Choosing a Framework/App Architecture for Desktop &amp;amp; Mobile Cross-Platform Apps&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/wpf-winforms-maui-shared-codebase" target="_blank"&gt;GitHub sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;Connect a .NET Desktop Client (WinForms&amp;nbsp;Data Grid)&amp;nbsp;to a Custom ASP.NET Core Service (&lt;/a&gt;&lt;strong&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;EF Core with pure Web&amp;nbsp;API&lt;/a&gt;&lt;/strong&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;)&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/08/30/connect-a-winforms-data-grid-to-a-net-core-service.aspx" target="_blank"&gt;Part 1 — Architecture and Data Binding&lt;/a&gt;&amp;nbsp; /&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service" target="_blank"&gt;GitHub&amp;nbsp;sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/09/23/connect-a-winforms-data-grid-to-an-arbitrary-asp-net-core-webapi-service-powered-by-ef-core-add-editing-features.aspx" target="_blank"&gt;Part 2 — Add Editing Features&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service-enable-editing" target="_blank" rel="nofollow noreferrer"&gt;GitHub sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/10/08/connect-a-winforms-data-grid-to-an-arbitrary-asp-net-core-webapi-service-powered-by-ef-core-authenticate-users-and-protect-data.aspx" target="_blank"&gt;Part&amp;nbsp;3&amp;nbsp;— Authenticate Users and Protect Data&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service-enable-pbac" target="_blank"&gt;GitHub sample&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/12/18/connect-a-winforms-data-grid-to-an-arbitrary-asp-net-core-webapi-service-powered-by-ef-core-authorization-code-flow.aspx" target="_blank"&gt;Part 4&amp;nbsp;— Authorization Code Flow with&amp;nbsp;Keycloak&lt;/a&gt;&amp;nbsp;/&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-dotnetcore-service-enable-auth-code-flow" target="_blank"&gt;GitHub sample&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color:#ffff99;"&gt;&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/07/18/winforms-connect-a-net-desktop-client-to-a-secure-backend-with-the-devexpress-web-api-service-ef-core-with-odata.aspx" target="_blank"&gt;Connect a .NET Desktop Client (WinForms&amp;nbsp;Data Grid)&amp;nbsp;to a Secure Backend Web API Service (&lt;strong&gt;EF Core&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;with&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;OData&lt;/strong&gt;)&lt;/a&gt;&amp;nbsp;- this post&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/winforms/archive/2024/09/18/winforms-connect-net-desktop-client-to-secure-backend-with-middle-tire-server-ef-core.aspx" target="_blank"&gt;Connect a .NET Desktop Client (WinForms Data Grid) to a&amp;nbsp;Middle Tier Security Server (&lt;strong&gt;EF Core&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;with&amp;nbsp;WebSockets&lt;/strong&gt;)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;TBD&amp;nbsp;—&amp;nbsp;Azure Databases with Data API Builder&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;TBD&amp;nbsp;—&amp;nbsp;GraphQL APIs&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We also have related blog series, which may be of interest for you as well:&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2023/04/11/consume-the-devexpress-backend-web-api-from-javascript-with-svelte-part-1.aspx" target="_blank"&gt;JavaScript — Consume the DevExpress Backend Web API with Svelte&lt;/a&gt;&amp;nbsp;(7 parts from data editing to validation,&amp;nbsp;localization, reporting).&lt;/p&gt;&lt;h3&gt;Target Audience&lt;/h3&gt;&lt;p&gt;We believe our&amp;nbsp;post&amp;nbsp;and solutions will be interesting to .NET customers who are currently using&amp;nbsp;ADO.NET and&amp;nbsp;direct SQL (with or without DataSet), EF Core or XPO ORM (with or without authentication and authorization systems), OData or custom Web API endpoints,&amp;nbsp;and who wish to save time when implementing the requirements above.&lt;/p&gt;&lt;p&gt;Even if you have already addressed these requirements (for instance, your DBA configures security permissions in SQL Server manually), our solutions may help optimize implementation/maintenance costs and avoid reinventing the wheel (for instance, by migrating to a component that already does most of the work for you).&lt;/p&gt;&lt;h3&gt;Separation of Backend and Frontend (Data Access&amp;nbsp;Security, Code Sharing, API Services)&lt;br&gt;&lt;/h3&gt;&lt;p&gt;Our first look is the separation of backend and frontend within application systems by &lt;strong&gt;&lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-webapi-service" target="_blank"&gt;example of a WinForms UI client&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;with ASP.NET Core Web API/OData v4,&amp;nbsp;Entity Framework Core (EF Core) and our &lt;strong&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service?utm_source=DevExpress&amp;amp;utm_medium=Blog&amp;amp;utm_id=XAF&amp;amp;utm_term=part3&amp;amp;utm_content=oliver-apr2022" target="_blank"&gt;DevExpress Web API Service&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;as a backend. This separation/architecture is critical, because of the following:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Certain environments/business apps cannot maintain direct database connections because of &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404691/security-considerations/general-security-considerations#data-store-protection" target="_blank"&gt;security considerations&lt;/a&gt;. A built-in&amp;nbsp;&lt;span&gt;security system (with authentication and access control)&amp;nbsp;is required to filter&amp;nbsp;out secured server data based on permissions granted to users/roles.&amp;nbsp;&lt;/span&gt;&lt;span&gt;With this additional layer of protection,&amp;nbsp;UI clients cannot access database connection information or read/modify database tables directly.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Developers are often required to build multiple UI clients (desktop, web, mobile) and reuse shared databases/business logic/external systems. API services is a natural choice or solution here from a usability and maintenance point of view, not just security.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Developers want to build REST API services quickly and often require flexible filtering, grouping, paging options out-of-the-box (&lt;a href="https://learn.microsoft.com/en-us/odata/overview" target="_blank"&gt;learn more&lt;/a&gt;).&amp;nbsp;OData remains a good option here&amp;nbsp;- many DevExpress customers (across all platforms) are still happily using OData in their desktop, mobile and web apps. We have many related support tickets annually for DevExtreme (Angular, React, Vue), WinForms, WPF, XAF, .NET MAUI, Blazor.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;WinForms Code Example&lt;/h2&gt;&lt;h3&gt;Supported Use-Cases&lt;/h3&gt;
&lt;p&gt;We added &lt;a href="https://github.com/DevExpress-Examples/connect-winforms-grid-to-webapi-service" target="_blank" style="background-color:#ffff99;"&gt;a WinForms project on GitHub&lt;/a&gt; to demonstrate the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build a data model for application business entities and security policies with EF Core (&lt;strong&gt;you can use our Web API Service with the DevExpress XPO ORM as well&lt;/strong&gt;);&lt;/li&gt;
&lt;li&gt;Securely load data from OData endpoints to a WinForms UI client using our WinForms Grid control;&lt;/li&gt;
&lt;li&gt;Activate authentication and authorization for the WinForms app using custom Web API endpoints;&lt;/li&gt;
&lt;li&gt;Create a logon form and customize the UI based on access permissions (for instance, to prevent data edit operations).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://github.com/DevExpress-Examples/connect-winforms-grid-to-webapi-service/raw/24.1.3%2B/winforms-client-app.gif" alt="DevExpress WinForms Client Application"&gt;&lt;/p&gt;
&lt;h3&gt;Related Articles&lt;/h3&gt;&lt;p&gt;Some of you may already be familiar with similar requirements and our OData-based Web API Service solution&amp;nbsp;(from a blog series for JavaScript, Blazor and .NET MAUI:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2023/04/11/consume-the-devexpress-backend-web-api-from-javascript-with-svelte-part-1.aspx" target="_blank"&gt;JavaScript — Consume the DevExpress Backend Web API with Svelte (Part 1. Get Started and Load Data)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2023/03/29/authorize-ef-core-crud-operations-and-download-reports-in-net-maui-with-odata-web-api.aspx" target="_blank"&gt;.NET MAUI — Authorize EF Core CRUD Operations and Download Reports with OData Web API&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2023/05/01/authorize-ef-core-crud-operations-and-download-reports-in-blazor-webassembly-with-odata-web-api.aspx" target="_blank"&gt;Blazor WebAssembly — Authorize EF Core CRUD Operations and Download Reports with OData Web API&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/mobile/archive/2024/05/02/choosing-a-framework-and-app-architecture-for-desktop-and-mobile-cross-platform-apps.aspx" target="_blank"&gt;Choosing a Framework/App Architecture for Desktop &amp;amp; Mobile Cross-Platform Apps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2022/10/17/common-questions-about-the-new-devexpress-web-api-service-powered-by-entity-framework-and-xpo-orm.aspx" target="_blank"&gt;Common Questions about the New DevExpress Web API Service (powered by Entity Framework and XPO ORM)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Related Customer&amp;nbsp;Testimonials&lt;/h3&gt;&lt;p&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1224288/web-api-services#f99e7337-264c-4eb9-a80e-236fe738dadb" target="_blank"&gt;This customer&lt;/a&gt;&amp;nbsp;especially liked the ease of integration and configuration in our&amp;nbsp;Web API Service:&lt;/p&gt;&lt;blockquote&gt;The aspects of your Web API Service that particularly piqued our interest, beyond the standard Create, Read, Update, and Delete (CRUD) capabilities, are twofold:&lt;br&gt;- Firstly, the simplicity of its implementation process stands out, facilitating a seamless integration into our existing systems.&lt;br&gt;- Secondly, the extensive array of configuration options available offers a level of flexibility that is greatly appreciated, enabling us to tailor the service to our specific needs with ease.&lt;br&gt;We discovered your service through several of your publications regarding product updates, which highlighted these beneficial features and encouraged us to explore its potential for our projects.&lt;/blockquote&gt;&lt;p&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1089872/error-xaf-security-api-saving-nested-objects" target="_blank"&gt;Another customer&lt;/a&gt;&amp;nbsp;also liked our integration capabilities:&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;I&amp;#39;m working on an Angular XAF WebApi project. The harmony between the two surprised me. Perfect operation, incredible performance and a great time saver.&lt;/blockquote&gt;&lt;p&gt;Here is&amp;nbsp;a nice quote&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1121121/accessing-lat-long-of-the-geography-sql-type-in-xpo-model#cdacb4de-73fe-4310-9c9f-af1fb8a06861" target="_blank"&gt;from one of our customers&lt;/a&gt;, who bought a DevExpress&amp;nbsp;Universal license because of our Web API Service:&lt;/p&gt;&lt;blockquote&gt;Using this Web API Service in the majority of my new projects:&lt;br&gt;- Ease-to-use API Service and &amp;quot;embedded&amp;quot; OData Layer.&amp;nbsp;Auto-generated endpoints on each Business Object are handy and significantly decrease development time.&amp;nbsp;Just great for building front-end UI using properly organized request service, since most of the filtration can be handled without body, using only URL params.&lt;br&gt;- Supplies all of the basic requirements of the API.&amp;nbsp;But custom functions aren&amp;#39;t always easy to do. The documentation contains all the required information for product use, but from a newcomer&amp;#39;s POV, sometimes it&amp;#39;s hard to completely understand it.&lt;/blockquote&gt;&lt;p&gt;For more feedback from our customers (for example, about our built-in security system), please&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/security-web-api-service.xml" target="_blank"&gt;visit this page&lt;/a&gt;.​&lt;/p&gt;&lt;h2&gt;Future Considerations &lt;/h2&gt;
&lt;p&gt;Our next series may cover one of the following scenarios in the context of distributed client-server applications, where a client is a typical CRUD WinForms/WPF/VCL application:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WinForms — Connect a .NET Desktop Client to a Secure Backend with the Middle Tier Application Server (EF Core without OData)&lt;/strong&gt;&lt;br&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404398/data-security-and-safety/security-system/security-tiers/middle-tier-security-ef-core/connect-to-the-efcore-middle-tier-service-from-non-xaf-applications" target="_blank"&gt;With our Middle Tier solution&lt;/a&gt;, EF Core or XPO ORM developers can retain their standard DbContext or Session and initiate remote connections to a data store from any .NET client (like WinForms, WPF, .NET MAUI, etc.). In a nutshell, these developers need to either retrofit their &amp;quot;fat clients&amp;quot; for Windows (#1) or redo everything from scratch using current-day Web technologies and Cloud services (#2). Our Middle Tier solution allows you to choose the &amp;quot;easier&amp;quot; and potentially more reliable route (#1), and to &amp;quot;replace&amp;quot; direct database connections with middleware.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WinForms — Connect a .NET Desktop Client to Azure Databases with Data API Builder&lt;br&gt;&lt;/strong&gt;This should be similar to the previous examples where we bind our data grid/other components to APIs, but using different middleware. &lt;a href="https://learn.microsoft.com/en-us/azure/data-api-builder/overview" target="_blank"&gt;Data API Builder (DAB)&lt;/a&gt; is relatively new option on the market (from Microsoft). You can consider it as a competitor to our own Web API Service. DAB replaces custom CRUD API (Create, Read, Update, Delete) operations against a database. DAB is cross-platform, open-source, and independent of language, technology, and frameworks. It requires zero code and a single configuration file. Best of all, it&amp;#39;s free, with no premium tier, and can run in any cloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WinForms — Connect a .NET Desktop Client to GraphQL APIs&lt;br&gt;&lt;/strong&gt;GraphQL and REST are two common architectural patterns for building APIs. Unlike REST APIs (they use standard HTTP methods to access resources through dedicated endpoints), GraphQL is an intermediary layer that takes a single API request and responds to it with data from multiple sources. It allows you to be very specific, and does not include unnecessary data in its responses. We had &lt;a href="https://js.devexpress.com/React/Documentation/Guide/Common/React_Integration_Guides/Bind_DevExtreme_components_to_GraphQL/" target="_blank"&gt;a DevExtreme/JS-based example&lt;/a&gt; in the past and want to explore how this option can work with .NET desktop apps.&amp;nbsp;According to Postman’s 2023 State of the API report, 86% of developers use REST, while 29% use GraphQL. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our considerations and questions for you include the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Not everybody is using good ol&amp;#39;&amp;nbsp;OData&amp;nbsp;(for example, many people implement ASP.NET Core&amp;nbsp;Web API endpoints from scratch) or even EF Core ORM.&lt;/li&gt;
&lt;li&gt;GraphQL appears to be exclusively adopted by our DevExtreme/JS-based React or Vue customers. We are not sure that many desktop apps need to consume GraphQL.&lt;/li&gt;
&lt;li&gt;Are you integrating with&amp;nbsp;GraphQL, Data API Builder, gRPC,&amp;nbsp;native SQL Server APIs, or Microsoft Graph (besides DevExpress Scheduler control synchronization with&amp;nbsp;&lt;a href="https://docs.devexpress.com/WindowsForms/404317/controls-and-libraries/scheduler/import-and-export/synchronization-with-outlook-365-calendars" target="_blank"&gt;Microsoft 365 or Google&lt;/a&gt;) in desktop apps? How do you implement access control or authorization for your data and APIs?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;
&lt;p&gt;Please share your feedback on proposed API integration options based on past requirements or upcoming projects with DevExpress WinForms/WPF/VCL components.&lt;/p&gt;
&lt;div data-survey-id="002ab03f-6bc2-48b7-8c75-a5fd31e15c8a" data-survey-auth-required="false"&gt;&lt;/div&gt;
    &lt;p style="color:#2f5496;"&gt;&lt;span style="color:#2f5496;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;&lt;span&gt;Thanks,&lt;/span&gt;&lt;br&gt;&lt;span&gt;Dennis Garavsky&lt;/span&gt;&lt;br&gt;&lt;span&gt;Principal Product Manager&lt;/span&gt;&lt;br&gt;&lt;a href="mailto:dennis@devexpress.com?subject=Feedback%20on%20WebAPI%20Experience" title="Email me if you have questions or suggestions"&gt;dennis@devexpress.com&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 17 Jul 2024 23:24:00 Z</pubDate>
      <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
    </item>
    <item>
      <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388156</guid>
      <link>https://community.devexpress.com/Blogs/winforms/archive/2024/06/04/winforms-how-to-integrate-semantic-similarity-search-in-the-grid-control-powered-by-smartcomponents-local-embeddings.aspx</link>
      <category domain="https://community.devexpress.com/Tags/ai">ai</category>
      <category domain="https://community.devexpress.com/Tags/featured">featured</category>
      <category domain="https://community.devexpress.com/Tags/ML">ML</category>
      <category domain="https://community.devexpress.com/Tags/net">net</category>
      <category domain="https://community.devexpress.com/Tags/netcore">netcore</category>
      <category domain="https://community.devexpress.com/Tags/ONNX">ONNX</category>
      <category domain="https://community.devexpress.com/Tags/OpenAI">OpenAI</category>
      <category domain="https://community.devexpress.com/Tags/smartcomponents">smartcomponents</category>
      <category domain="https://community.devexpress.com/Tags/windows">windows</category>
      <category domain="https://community.devexpress.com/Tags/WinForms">WinForms</category>
      <title>WinForms — How to Integrate Semantic Similarity Search in the Grid Control (Powered by Embedding Models)</title>
      <description>&lt;p&gt;I am sure many of you remember &lt;a href="https://devblogs.microsoft.com/dotnet/introducing-dotnet-smart-components/" target="_blank"&gt;Introducing .NET Smart Components – AI-powered UI controls&lt;/a&gt;&amp;nbsp;by&amp;nbsp;Daniel Roth and Steve Sanderson (both from Microsoft) and the excitement this article generated within the community. While this is still an ongoing experiment, many loved the example&amp;nbsp;(myself included) because of the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Thanks to its&amp;nbsp;&lt;strong&gt;simplicity,&amp;nbsp;&lt;/strong&gt;developers can &amp;quot;ride AI&amp;quot; locally without earning an Azure or OpenAI PhD - smart functions are available using a single NuGet package. &lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&amp;quot;Smart search&amp;quot;&lt;/span&gt;&amp;nbsp;is made possible by&amp;nbsp;&lt;/span&gt;&lt;a href="https://github.com/dotnet-smartcomponents/smartcomponents/blob/main/docs/local-embeddings.md" target="_blank"&gt;Local Embeddings&lt;/a&gt;&lt;span&gt;, and its beauty lies in its ability to&amp;nbsp;&lt;strong&gt;run&amp;nbsp;locally, without&amp;nbsp;external AI services&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Associated&amp;nbsp;&lt;strong&gt;usage&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;scenarios simply&amp;nbsp;make sense&lt;/strong&gt; -&amp;nbsp;many line of business (LOB) applications can benefit from this implementation immediately. Take&amp;nbsp;semantic similarity search as an example: End users&amp;nbsp;can search for the word &amp;quot;furniture&amp;quot;&amp;nbsp;when using the DevExpress  Data Grid, Lookup or other data-aware controls, and the implementation is smart enough to return records such as &amp;quot;chair&amp;quot;, &amp;quot;table&amp;quot;, &amp;quot;sofa&amp;quot;, &amp;quot;wardrobe&amp;quot;, etc.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Problem/Usage Scenario&lt;/h2&gt;&lt;p&gt;The original&amp;nbsp;post referenced above featured ASP.NET Core Blazor and&amp;nbsp;MVC/Razor integrations. In this post, I&amp;#39;ll demonstrate the ease with which you can introduce &amp;quot;smart search&amp;quot; using our award-winning Data Grid for WinForms. Integrations for other data-aware DevExpress UI controls will be similar - you will simply need to use appropriate events to achieve the desired result.&amp;nbsp;&lt;span&gt;You can download the example referenced in this post&amp;nbsp;&lt;/span&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1236349/winforms-data-grid-smart-search-ai-filter" target="_blank" style="background-color:#ffff99;"&gt;using the following link&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/Smart_AI_Filter_iHEYORqKb0.gif" alt="" style="width:2499px;height:1506px;"&gt;&lt;/p&gt;&lt;h2&gt;Implementation Details&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt;&amp;nbsp;Microsoft&amp;#39;s&amp;nbsp;&lt;a href="https://www.nuget.org/packages/SmartComponents.LocalEmbeddings/0.1.0-preview10148" target="_blank"&gt;SmartComponents.LocalEmbeddings&lt;/a&gt; NuGet package (available as an&amp;nbsp;experimental &lt;a href="https://github.com/dotnet-smartcomponents/smartcomponents" target="_blank"&gt;GitHub repo&lt;/a&gt;) lies at the core of our &amp;quot;smart search&amp;quot; implementation - we simply added it to our WinForms project along with our DevExpress.Win.Grid package. Nothing more, nothing less.&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/image(2).png" alt="" class="small" style="width:515px;height:331px;"&gt;&lt;p&gt;Let&amp;#39;s take a closer look at Local Embeddings from Microsoft&amp;#39;s GitHub repo:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Embeddings are used for semantic similarity search. Natural-language strings are converted into numerical vectors called embeddings. The more conceptually related are two strings, the closer their vectors. While you can use an external AI service to compute embeddings, in many cases you can &lt;strong&gt;simply compute them locally&lt;/strong&gt;&lt;strong&gt; on your server (no need for a GPU - the CPU will work fine).&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;SmartComponents.LocalEmbeddings is a package to simplify doing this.&amp;nbsp;&lt;/strong&gt;With SmartComponents.LocalEmbeddings, you can compute embeddings in under a millisecond, and perform semantic search over hundreds of thousands of candidates in single-digit milliseconds. &lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;The SmartComponents.LocalEmbeddings NuGet package does not actually contain any ML model, but it is configured to download a model when you first build your application. You can configure which model is downloaded&lt;/div&gt;

&lt;p&gt;For additional information in this regard, please&amp;nbsp;review&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/understand-embeddings" target="_blank"&gt;Understand embeddings in Azure OpenAI Service&lt;/a&gt; or search for similar articles on the web. The ONNX embeddings model (powered by &lt;a href="https://github.com/microsoft/onnxruntime" target="_blank"&gt;Microsoft.ML.OnnxRuntime.dll&lt;/a&gt;)&amp;nbsp;is automatically added to your Bin folder from the&amp;nbsp;SmartComponents.LocalEmbeddings NuGet package - it is &lt;strong&gt;16MB&lt;/strong&gt; in&amp;nbsp;size.&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/winforms/image(3).png" alt="" class="small" style="width:836px;height:96px;"&gt;&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Our WinForms&lt;span&gt;&amp;nbsp;Grid is bound to a collection of Item records (ID, Name, Description). Test data was AI generated (a time saver). W&lt;/span&gt;e handle the Grid&amp;#39;s&amp;nbsp;&lt;a href="https://docs.devexpress.com/WindowsForms/DevExpress.XtraGrid.Views.Base.ColumnView.CustomRowFilter" target="_blank"&gt;ColumnView.CustomRowFilter&lt;/a&gt; event to determine row visibility&amp;nbsp;(based on item text similarity - in this example Name and optionally Description) for&amp;nbsp;search strings. We also trigger the filtering routine when handling keyboard input or changing search options (like similarity threshold).&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;        void OnCustomRowFilter(object sender, RowFilterEventArgs e) {
            Item? item = ((ColumnView)sender).DataController.GetRowByListSourceIndex(e.ListSourceRow) as Item;
            if(item == null)
                return;
            string filter = teFilter.Text;
            if(string.IsNullOrEmpty(filter))
                return;
            float threshold = (float)tbThreshold.Value / 100;
            e.Visible = SmartFilterProvider.IsSimilarTo(filter, item.Name, threshold);
            if(!e.Visible &amp;amp;&amp;amp; cbIncludeDescription.Checked)
                e.Visible = SmartFilterProvider.IsSimilarTo(filter, item.Description, threshold);
            e.Handled = true;
        }&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt;&amp;nbsp;&amp;quot;Smart search&amp;quot; is made possible by the SmartFilterProvider class - which calls the SmartComponents.LocalEmbeddings API based on&amp;nbsp;documentation published in the GitHub repo.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;namespace SmartAIFilter.Provider {
    using SmartComponents.LocalEmbeddings;

    public static class SmartFilterProvider {
        readonly static LocalEmbedder Embedder = new LocalEmbedder(caseSensitive: false);
        readonly static ConcurrentDictionary&amp;lt;string, EmbeddingF32&amp;gt; cache =
            new ConcurrentDictionary&amp;lt;string, EmbeddingF32&amp;gt;(StringComparer.OrdinalIgnoreCase);
        public static bool IsSimilarTo(string filter, string text, float threshold = 0.75f) {
            EmbeddingF32 eText = cache.GetOrAdd(text, x =&amp;gt; Embedder.Embed(x));
            EmbeddingF32 eFilter = cache.GetOrAdd(filter, x =&amp;gt; Embedder.Embed(x));
            return eFilter.Similarity(eText) &amp;gt; threshold;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div class="Note"&gt;&lt;div&gt;The LocalEmbedder class above uses the&amp;nbsp;&lt;a href="https://onnxruntime.ai/docs/get-started/with-csharp.html" target="_blank"&gt;ONNX &lt;/a&gt;runtime -&amp;nbsp;which can execute many different CPU or GPU embedding&amp;nbsp;models (and often, CPU works faster for such small models).&lt;/div&gt;&lt;div&gt;The SmartComponents.LocalEmbeddings NuGet package does not actually contain any ML model, but it is configured to download a model when you first build your application. As mentioned earlier, you can configure which model is downloaded.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;As a developer, you can  tune this example based on your specific use-case scenario/project requirement. For example, you can use&amp;nbsp;online (OpenAI, Azure, etc.) or offline models (Ollama, ONNX) as needed.&amp;nbsp;&lt;span&gt;You can download the example referenced in this post&amp;nbsp;&lt;/span&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1236349/winforms-data-grid-smart-search-ai-filter" target="_blank" style="background-color:#ffff99;"&gt;using the following link&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p&gt;As always, your feedback is very important. Please let us know whether additional AI-related samples/solutions are of interest to you and how you expect AI to change your development strategies in the next 12-months.&lt;/p&gt;
&lt;div data-survey-id="250480b2-a10c-44e8-b657-28afff16d19f" data-survey-auth-required="false"&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;Thanks,&lt;/span&gt;&lt;br&gt;&lt;span&gt;Dennis Garavsky&lt;/span&gt;&lt;br&gt;&lt;span&gt;Principal Product Manager&lt;/span&gt;&lt;br&gt;&lt;a href="mailto:dennis@devexpress.com" title="Email me if you have questions or suggestions"&gt;dennis@devexpress.com&lt;/a&gt;&lt;br&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 04 Jun 2024 03:38:00 Z</pubDate>
      <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
    </item>
  </channel>
</rss>