个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

DevExpress Universal v22.2 更新亮点解析(二):WinForms 控件

原创
软件开发
来源:DevExpress
ui界面
DevExpress
.net
Winform
2022-12-15
ui界面
DevExpress
.net
Winform

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

 

WXI 皮肤的新 Office 调色板 - WinForms 控件 | DevExpress

 

 

用户界面模板 (EAP)

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

 

 

Winforms UI 模板,DevExpress

 

 

注意:此 EAP 可供活跃的Universal订阅者使用,并且仅用于早期测试目的(仅限 C#)。

 

 

里面有什么

EAP 仅限于 25 个模板,包括 UI 表单、按钮、组控件、独立数据编辑器和预先设计的并排主从 CRUD UI(仅限 C#)。根据反馈/使用场景/支持要求,我们预计明年将使用新的 UI 模板扩展图库。

 

 

表单、编辑器、组、按钮 - Winforms UI 模板、DevExpress

 

 

所有 WinForms UI 模板都利用现有的 DevExpress WinForms 控件,完全支持 WinForms MVVMDirectX 硬件加速、DevExpress 应用程序皮肤以及HTML CSS 支持。UI 模板是可配置的,并且可以根据需要进行扩展。

 

 

带有 CRUD UI 的并排主从网格/树视图

我们还创建了 6 个新的 UI 模板(用户控件),可以使用并排主从视图。所有模板都带有预先设计的 CRUD UI,支持 MVVM 架构,并集成了我们的 WinForms 数据网格、TreeList、布局和数据编辑器。

 

 

带有 CRUD UI 的并排主从树视图 - Winforms UI 模板,DevExpress

 

 

现在就试试!

所有 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为指示器和连接器添加了发光效果。您可以将发光效果应用于活动元素、非活动元素或活动元素和非活动元素。

 

 

Shining Shadows - WinForms 步骤进度条,DevEpress

 

运行演示  

要执行此演示,您必须先安装 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);

}

自定义绘制空背景 - WInForms ListBox, DevExpress

 

示例 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;

}

 

绘制 HTML 模板 - WinForms ListBox, DevExpress

 

运行演示   

要执行此演示,您必须先安装 DevExpress WinForms 产品库

 

列表编辑器 - 按升序、降序和自定义顺序对项目进行排序

我们的 WinForms CheckedComboBoxEdit 现在支持未绑定模式下的排序操作。使用其新的SortOrder属性按升序或降序对项目进行排序。

 

我们还向 ListBoxChecked ListBoxImage 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;

}

 

查找增强功能

不兼容的值类型异常

 

所有查找编辑器(LookUpEditSearchLookUpEditTreeListLookUpEdit GridLookUpEdit)现在在绑定到不兼容的类型值时都会发出警告。

 

您还可以启用ThrowExceptionOnInvalidLookUpEditValueType选项来检测数据类型问题并引发异常。

 

 

按删除/退格键清除值

 

如果编辑器允许用户使用键盘重置其值(启用AllowNullInput选项), 用户现在可以通过按 Delete Backspace 键清除查找值。

 

 

下拉窗口中的 SVG 支持

 

LookUpEdit 现在可以在其下拉列表中显示 SVG 图形(开箱即用)。文档

 

 

回车时选择第一项

 

我们新的SelectFirstRowOnEnterKey选项允许用户在搜索操作后按 Enter 键时选择下拉列表中的第一项。

 

WinForms 查找控件,DevExpress

 

 

文本编辑中的新 DateOnly/TimeOnly 掩码 (.NET 6+)

新的日期时间掩码可帮助您编辑DateOnlyTimeOnly数据结构。使用这些掩码之一时,文本编辑器会自动将其 EditValue 转换为适当的类型。

 

DateOnly TimeOnly 掩码类型可用于 .NET 6+ 应用程序。

 

 

仪表

DirectX 支持

DevExpress WinForms Gauges控件现在在放置在 DirectX 窗体中时使用我们的DirectX 引擎呈现。


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508