WinForms 控件 v22.2
.NET 6.0/7.0 - Windows
v22.2 需要 .NET 6 和 Visual Studio 2022 (v17.0) 或更高版本。
v22.2 支持.NET 7.0。
这不会以任何方式影响 .NET Framework 客户— 我们的产品程序集将在此发布周期 (v22.2) 中继续以 .NET Framework 4.5.2 为目标。
皮肤和矢量图标
WXI 皮肤的新办公室调色板
我们为受 Windows 11 启发的 WXI 皮肤设计了新的受 Office 启发的调色板。这些包括:
• Office White
• Office Colorful
• Office Dark Gray
• Office Black

用户界面模板 (EAP)
DevExpress UI 模板旨在提高新老开发人员的工作效率(专为 Windows 窗体平台构建)。使用模板,您可以在几分钟内将优雅的 UI 表单添加到您的 WinForms 项目中,例如登录、注册、卡支付和地址表单。

注意:此 EAP 可供活跃的Universal订阅者使用,并且仅用于早期测试目的(仅限 C#)。
里面有什么
此 EAP 仅限于 25 个模板,包括 UI 表单、按钮、组控件、独立数据编辑器和预先设计的并排主从 CRUD UI(仅限 C#)。根据反馈/使用场景/支持要求,我们预计明年将使用新的 UI 模板扩展图库。

所有 WinForms UI 模板都利用现有的 DevExpress WinForms 控件,完全支持 WinForms MVVM、DirectX 硬件加速、DevExpress 应用程序皮肤以及HTML 和 CSS 支持。UI 模板是可配置的,并且可以根据需要进行扩展。
带有 CRUD UI 的并排主从网格/树视图
我们还创建了 6 个新的 UI 模板(用户控件),可以使用并排主从视图。所有模板都带有预先设计的 CRUD UI,支持 MVVM 架构,并集成了我们的 WinForms 数据网格、TreeList、布局和数据编辑器。

现在就试试!
所有 WinForms UI 模板都作为 VSIX 扩展提供。
告诉我们你的想法
一旦我们确定 UI 模板对您和您的企业具有商业价值,我们希望使用新的 UI 模板扩展/扩展我们的 WinForms 库。
虽然此 EAP 目前仅限于活跃的 Universal 订阅者,但我们希望听到针对 Windows Forms 平台的每个人的意见。
数据网格
按需启用/禁用和显示/隐藏详细信息选项卡
GridView.DetailTabStyle事件中的新选项允许您根据特定条件启用/禁用和显示/隐藏各个详细信息选项卡(在代码中)。
C#
void GridView_DetailTabStyle(object sender, DetailTabStyleEventArgs e) {
if (e.Caption == "Notes" && <CUSTOM_CONDITION>)
e.Visible = false;
if (e.Caption == "Users" && <CUSTOM_CONDITION>)
e.Enabled = false;
}
运行演示
要执行此演示,您必须先安装 DevExpress WinForms 产品库 。
主从 - 将显示属性应用于列表属性
您现在可以应用“显示”数据注释属性来列出数据对象中的属性。
C#
public class Category {
public int ID { get; set; }
public string Name { get; set; }
[Display(Name="PRODUCTS")]
public List<Product> Products { get; set; }
[Display(AutoGenerateField=false)]
public List<Note> Notes { get; set; }
}
BandPositionChanged 事件
BandPositionChanged事件在波段改变其位置或可见性时触发:
• 用户拖动带并将其放到不同的位置。
• 用户将乐队隐藏或拖动到自定义表单或从自定义表单中拖动乐队。
• 条带可见性已在代码中修改。
DirectX 表格
支持条形项
表单标题现在可以显示栏项。与我们的工具栏表单一样,DirectX 表单标题包含两个可以接受栏项的区域。最左边的区域可以在窗体图标旁边显示条形项。最右边的区域可以在窗体的最小化-最大化-关闭按钮之前显示栏项。
支持对接
我们继续扩展可在我们的 DirectX 表单中放置/显示的 DirectX 兼容控件和组件的列表。在 v22.2 中,我们的 DirectX Form 同时支持 DevExpress Dock 和 Document Manager 组件。
其他增强功能
• 我们增强了设计时体验。您现在可以在各种 DirectX 窗体区域放置控件。
• HTML 和 CSS 模板中的< input > 标签支持。
• 增强了与我们的 WinForms Scheduler 控件的交互。
数据编辑器
步骤进度条 - 闪亮阴影
我们新的ShadowDrawMode为指示器和连接器添加了发光效果。您可以将发光效果应用于活动元素、非活动元素或活动元素和非活动元素。

运行演示
要执行此演示,您必须先安装 DevExpress WinForms 产品库 。
ListBox - 当列表为空时显示自定义内容
我们新的CustomDrawEmptyForeground事件允许您在 ListBox 控件中显示不包含项目的自定义内容。您可以使用我们的标准自定义绘图 API 或在列表框中呈现 HTML 模板。
示例 1 - 传统的自定义绘图
C#
void ListBoxControl1_CustomDrawEmptyForeground(object sender, ListBoxDrawEmptyForegroundEventArgs e) {
e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
e.Appearance.DrawString(e.Cache, "The ListBox is empty.", e.Bounds);
}

示例 2 - 呈现 HTML 模板
C#
// Local painting context that contains HTML tree state.
DxHtmlPainterContext ctx = new DxHtmlPainterContext();
// Draw HTML template.
HtmlTemplate htmlTemplate = new HtmlTemplate(LoadTemplate("ListBoxEmptyForeground.html"), LoadTemplate("ListBoxEmptyForeground.css"));
void ListBoxControl1_CustomDrawEmptyForeground(object sender, ListBoxDrawEmptyForegroundEventArgs e) {
e.DrawHtml(htmlTemplate, ctx);
}
static string LoadTemplate(string fileName) {
return File.ReadAllText(fileName);
}
void ListBoxControl1_MouseMove(object sender, MouseEventArgs e) {
ListBoxControl listControl = sender as ListBoxControl;
if(listControl.ItemCount == 0) {
ctx.OnMouseMove(e);
listControl.Cursor = ctx.GetCursor(e.Location);
listControl.Invalidate();
} else listControl.Cursor = Cursors.Default;
}
// Handle the 'Add Items' button's click.
void ListBoxControl1_MouseDown(object sender, MouseEventArgs e) {
ListBoxControl listControl = sender as ListBoxControl;
if(listControl.ItemCount == 0 && e.Button == MouseButtons.Left) {
var clickInfo = ctx.CalcHitInfo(e.Location);
if(clickInfo != null && clickInfo.ParentHasId("btnAdd"))
listControl.Items.AddRange(new string[] {
"Item 1",
"Item 2",
"Item 3"
});
}
}
HTML
<div>
<div>There are no items in the ListBox control</div>
<div id="btnAdd">Add Items</div>
</div>
CSS
.container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
}
.title {
font-size: 14px;
}
.button {
background-color: @green;
color: @white;
opacity: 0.8;
border: 1px solid @green;
border-radius: 4px;
padding: 8px 18px;
font-size: 13px;
margin: 8px;
text-align: center;
cursor: pointer;
}
.button:hover {
background-color: @green;
box-shadow: 0px 0px 3px @green;
opacity: 0.9;
}

运行演示
要执行此演示,您必须先安装 DevExpress WinForms 产品库 。
列表编辑器 - 按升序、降序和自定义顺序对项目进行排序
我们的 WinForms CheckedComboBoxEdit 现在支持未绑定模式下的排序操作。使用其新的SortOrder属性按升序或降序对项目进行排序。
我们还向 ListBox、Checked ListBox、Image ListBox 和 Checked Combobox 控件添加了CustomSort事件。处理此事件以使用自定义排序逻辑对列表项进行排序。
C#
using DevExpress.XtraEditors.Controls;
void CheckedListBoxControl1_CustomSort(object sender, CheckedListBoxCustomSortEventArgs e) {
if(e.Item1.CheckState == e.Item2.CheckState)
e.Result = ((string)e.Value1).CompareTo((string)e.Value2);
else
e.Result = e.Item1.CheckState == CheckState.Checked ? -1 : 1;
}
void CheckedListBoxControl1_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e) {
checkedListBoxControl1.Sort();
}
void Form1_Load(object sender, EventArgs e) {
checkedListBoxControl1.Items.AddRange(new CheckedListBoxItem[] {
new CheckedListBoxItem(){ Value = "Bart Arnaz" },
new CheckedListBoxItem(){ Value = "Leah Simpson" },
new CheckedListBoxItem(){ Value = "Arnie Schwartz" },
new CheckedListBoxItem(){ Value = "Billy Zimmer" },
new CheckedListBoxItem(){ Value = "Samantha Piper" },
new CheckedListBoxItem(){ Value = "Maggie Boxter" },
new CheckedListBoxItem(){ Value = "Brad Farkus" },
});
checkedListBoxControl1.CheckOnClick = true;
}
查找增强功能
不兼容的值类型异常
所有查找编辑器(LookUpEdit、SearchLookUpEdit、TreeListLookUpEdit 和 GridLookUpEdit)现在在绑定到不兼容的类型值时都会发出警告。
您还可以启用ThrowExceptionOnInvalidLookUpEditValueType选项来检测数据类型问题并引发异常。
按删除/退格键清除值
如果编辑器允许用户使用键盘重置其值(启用AllowNullInput选项), 用户现在可以通过按 Delete 或 Backspace 键清除查找值。
下拉窗口中的 SVG 支持
LookUpEdit 现在可以在其下拉列表中显示 SVG 图形(开箱即用)。文档
回车时选择第一项
我们新的SelectFirstRowOnEnterKey选项允许用户在搜索操作后按 Enter 键时选择下拉列表中的第一项。

文本编辑中的新 DateOnly/TimeOnly 掩码 (.NET 6+)
新的日期时间掩码可帮助您编辑DateOnly和TimeOnly数据结构。使用这些掩码之一时,文本编辑器会自动将其 EditValue 转换为适当的类型。
DateOnly 和 TimeOnly 掩码类型可用于 .NET 6+ 应用程序。
仪表
DirectX 支持
DevExpress WinForms Gauges控件现在在放置在 DirectX 窗体中时使用我们的DirectX 引擎呈现。
渝公网安备50010702505508