news 2026/1/24 0:21:44

C# Winfrom DevExpress 控件概述: Dev简介与汉化 基础控件 : Label TextEdit ButtonEdit MemoEdit Check..

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# Winfrom DevExpress 控件概述: Dev简介与汉化 基础控件 : Label TextEdit ButtonEdit MemoEdit Check..

学习这个的 耗子味滋QAQ

Developer Express WinForms 控件概述:

Dev简介与汉化

基础控件 : Label TextEdit ButtonEdit MemoEdit CheckEdit RadioGroup DateEdit
CalendarControl SimpleButton CheckButton SpinEdit RatingControl
ColorEdit FontEdit TrackBarControl ProgressBarControl\
ToggleSwitch ImageEdit PictureEdit ImageSlider .....
ComboBoxEdit CheckedComboBoxEdit ImageComboBoxEdit
ListBoxControl CheckedListBoxControl ImageListBoxControl

布局控件 PanelControl GroupControl SplitContainerControl StackPanel TablePanel XtraTabControl SplitterControl

Developer Express(简称DevExpress)是一家专注于为软件开发人员提供高性能UI控件、工具和框架的软件公司。其产品广泛应用于Windows Forms、WPF、ASP.NET、Blazor、JavaScript等平台,帮助开发者快速构建企业级应用程序。

核心产品线

DevExpress WinForms
提供丰富的Windows Forms控件,包括数据网格、图表、报表、日程管理等组件,支持高DPI和现代化设计。

DevExpress WPF
针对WPF平台的UI控件库,包含MVVM框架、主题编辑器、数据可视化工具,适用于复杂桌面应用开发。

DevExpress ASP.NET
为ASP.NET Web Forms和MVC提供AJAX控件,如文件管理器、仪表盘、甘特图,支持响应式设计。

DevExpress Blazor
专为Blazor框架设计的组件库,包括数据网格、调度器、富文本编辑器,兼容Server和WebAssembly模式。

DevExpress JavaScript
跨平台的JavaScript控件,如DevExtreme,支持React、Angular、Vue等前端框架,涵盖移动端和Web端开发。

特色功能

  • 高性能数据处理:控件优化了大数据量处理能力,如虚拟滚动、异步加载。
  • 主题与样式:提供多种预定义主题(如Office 2019、Material Design),支持自定义样式。
  • 设计时支持:Visual Studio集成设计器,可通过拖拽快速配置控件属性。
  • 跨平台兼容性:部分产品支持.NET Core/.NET 5+,确保现代化技术栈兼容。

典型应用场景

  • 企业ERP/CRM系统开发
  • 数据分析与报表生成
  • 复杂表单和仪表盘设计
  • 跨平台移动应用构建

许可与支持

采用订阅制授权模式,提供定期更新和技术支持服务。开发者可通过官方示例代码库和活跃社区获取资源。

学习资源

  • 官方文档和API参考
  • GitHub示例项目
  • 视频教程与在线技术论坛

using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DXWinControls { public class SqlHelper { /// <summary> /// 连接字符串 /// </summary> private static string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; /// <summary> /// 增、删、改的通用方法 /// 执行Sql语句或存储过程,返回受影响的行数 /// SQL注入 /// </summary> /// <param name="sql">sql语句或存储过程名</param> /// <param name="cmdType">执行的脚本类型 1:sql语句 2:存储过程</param> /// <param name="parameters">参数列表</param> /// <returns></returns> public static int ExecuteNonQuery(string sql, int cmdType, params SqlParameter[] parameters) { //select @@Identity 返回上一次插入记录时自动产生的ID int result = 0;//返回结果 using (SqlConnection conn = new SqlConnection(connStr)) { //执行脚本的对象cmd SqlCommand cmd = BuilderCommand(conn, sql, cmdType, null, parameters); result = cmd.ExecuteNonQuery();//执行T-SQL并返回受影响行数 cmd.Parameters.Clear(); } //using原理:类似于try finally return result; } /// <summary> /// 执行sql查询,返回第一行第一列的值 /// </summary> /// <param name="sql">sql语句或存储过程</param> /// <param name="cmdType">执行的脚本类型 1:sql语句 2:存储过程</param> /// <param name="parameters">参数列表</param> /// <returns></returns> public static object ExecuteScalar(string sql, int cmdType, params SqlParameter[] parameters) { object result = null;//返回结果 using (SqlConnection conn = new SqlConnection(connStr)) { //执行脚本的对象cmd SqlCommand cmd = BuilderCommand(conn, sql, cmdType, null, parameters); result = cmd.ExecuteScalar();//执行T-SQL并返回第一行第一列的值 cmd.Parameters.Clear(); if (result == null || result == DBNull.Value) { return null; } else { return result; } } } /// <summary> /// 执行sql查询,返回SqlDataReader对象 /// </summary> /// <param name="sql">sql语句或存储过程</param> /// <param name="cmdType">执行的脚本类型 1:sql语句 2:存储过程</param> /// <param name="parameters">参数列表</param> /// <returns></returns> public static SqlDataReader ExecuteReader(string sql, int cmdType, params SqlParameter[] parameters) { SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = BuilderCommand(conn, sql, cmdType, null, parameters); SqlDataReader reader; try { //conn.Open(); reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); return reader; } catch (Exception ex) { conn.Close(); throw new Exception("创建reader对象发生异常", ex); } } /// <summary> /// 执行查询,查询结果填充到DataTable 只针对查询一个表的情况 /// </summary> /// <param name="sql">sql语句或存储过程</param> /// <param name="cmdType">执行的脚本类型 1:sql语句 2:存储过程</param> /// <param name="parameters">参数列表</param> /// <returns></returns> public static DataTable GetDataTable(string sql, int cmdType, params SqlParameter[] parameters) { DataTable dt = null; using (SqlConnection conn = new SqlConnection(connStr)) { SqlCommand cmd = BuilderCommand(conn, sql, cmdType, null, parameters); SqlDataAdapter da = new SqlDataAdapter(cmd); dt = new DataTable(); da.Fill(dt); cmd.Parameters.Clear(); } return dt; } /// <summary> /// 执行查询,数据填充到DataSet /// </summary> /// <param name="sql">sql语句或存储过程</param> /// <param name="cmdType">执行的脚本类型 1:sql语句 2:存储过程</param> /// <param name="parameters">参数列表</param> /// <returns></returns> public static DataSet GetDataSet(string sql, int cmdType, params SqlParameter[] parameters) { DataSet ds = null; using (SqlConnection conn = new SqlConnection(connStr)) { SqlCommand cmd = BuilderCommand(conn, sql, cmdType, null, parameters); //数据适配器 //conn 自动打开 断开式连接 SqlDataAdapter da = new SqlDataAdapter(cmd); ds = new DataSet(); da.Fill(ds); //自动关闭conn } return ds; } /// <summary> /// 事务 执行批量sql /// </summary> /// <param name="listSql"></param> /// <returns></returns> public static bool ExecuteTrans(List<string> listSql) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); SqlTransaction trans = conn.BeginTransaction(); SqlCommand cmd = BuilderCommand(conn, "", 1, trans); try { int count = 0; for (int i = 0; i < listSql.Count; i++) { if (listSql[i].Length > 0) { cmd.CommandText = listSql[i]; cmd.CommandType = CommandType.Text; count += cmd.ExecuteNonQuery(); } } trans.Commit(); return true; } catch (Exception ex) { trans.Rollback(); throw new Exception("执行事务出现异常", ex); } } } /// <summary> /// 事务 批量执行 CommandInfo 包括sql,脚本类型,参数列表 /// </summary> /// <param name="comList"></param> /// <returns></returns> public static bool ExecuteTrans(List<CommandInfo> comList) { using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); SqlTransaction trans = conn.BeginTransaction(); SqlCommand cmd = BuilderCommand(conn, "", 1, trans); try { int count = 0; for (int i = 0; i < comList.Count; i++) { cmd.CommandText = comList[i].CommandText; if (comList[i].IsProc) cmd.CommandType = CommandType.StoredProcedure; else cmd.CommandType = CommandType.Text; if (comList[i].Paras!=null && comList[i].Paras.Length > 0) { cmd.Parameters.Clear(); foreach (var p in comList[i].Paras) { cmd.Parameters.Add(p); } } count += cmd.ExecuteNonQuery(); } trans.Commit(); return true; } catch (Exception ex) { trans.Rollback(); throw new Exception("执行事务出现异常", ex); } } } //public static T ExecuteSql<T>(string sql, int cmdType, DbParameter[] paras, Func<IDbCommand, T> action) //{ // using (DbConnection conn = new SqlConnection(connStr)) // { // conn.Open(); // IDbCommand cmd = conn.CreateCommand(); // cmd.CommandText = sql; // if (cmdType==2) // cmd.CommandType = CommandType.StoredProcedure; // return action(cmd); // } //} public static T ExecuteTrans<T>(Func<IDbCommand, T> action) { using (IDbConnection conn = new SqlConnection(connStr)) { conn.Open(); IDbTransaction trans = conn.BeginTransaction(); IDbCommand cmd = conn.CreateCommand(); cmd.Transaction = trans; return action(cmd); } } /// <summary> /// 构建SqlCommand /// </summary> /// <param name="conn">数据库连接对象</param> /// <param name="sql">SQL语句或存储过程</param> /// <param name="comType">命令字符串的类型</param> /// <param name="trans">事务</param> /// <param name="paras">参数数组</param> /// <returns></returns> private static SqlCommand BuilderCommand(SqlConnection conn, string sql, int cmdType, SqlTransaction trans, params SqlParameter[] paras) { if (conn == null) throw new ArgumentNullException("连接对象不能为空!"); SqlCommand command = new SqlCommand(sql, conn); if (cmdType == 2) command.CommandType = CommandType.StoredProcedure; if (conn.State == ConnectionState.Closed) conn.Open(); if (trans != null) command.Transaction = trans; if (paras != null && paras.Length > 0) { command.Parameters.Clear(); command.Parameters.AddRange(paras); } return command; } } }

Dev简介

Developer Express ---DevExpress

Dev Winform WPF Web Reporting

优势:美化:美化界面、控件定制简单、体验、专业化,替代所有的传统控件、菜单。

汉化


下载汉化包
汉化包文件夹重命名zh-CN
如果只是项目内部汉化,把汉化包放到bin/debug下面,然后main()
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");
统一汉化:把汉化包放到C:\Program Files (x86)\DevExpress 20.1\Components\Bin\Framework
执行命令:
2. D:\>cd C:\Program Files (x86)\DevExpress 20.1\Components\Bin\Framework\zh-CN
3. C:\Program Files (x86)\DevExpress 20.1\Components\Bin\Framework\zh-CN>dir /B *.dll>temp.bat
4. 以文本方式打开 temp.bat 文件并编辑,在 DevExpress 前加上“gacutil -i”
5. C:\Program Files (x86)\DevExpress 20.1\Components\Bin\Framework\zh-CN>temp.bat

其他 WPF

WPF UI 界面布局 魔术棒 文字笔记识别 技能提升 布局功能扩展与自定义 继承Panel的对象,测量与排列 系列七

https://blog.csdn.net/cao919/article/details/140194739

C# WPF 3D 数据孪生 系列六-CSDN博客

WPF 3D绘图 点云 系列五-CSDN博客

WPF UI 3D 多轴 机械臂 stl 模型UI交互-CSDN博客

爬C初试 掌握WPF入门知识 获取某.aspx类目及控制仪表盘的指向

https://blog.csdn.net/cao919/article/details/127741725

ASP.NET Webform和ASP.NET MVC 后台开发 大概80%常用技术

https://blog.csdn.net/cao919/article/details/146230296

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/3 8:07:33

论文解读|创建管理古意大利语文本的科学工作流

论文解读&#xff1a;创建管理古意大利语文本的科学工作流 学术严谨 表达自然流畅 论文基本信息 标题&#xff1a;Creating a scientific workflow to manage Old Italian texts&#xff08;创建管理古意大利语文本的科学工作流&#xff09; 作者&#xff1a;Emiliano Degl…

作者头像 李华
网站建设 2026/1/20 11:19:18

6、搭建网站与服务器配置全攻略

搭建网站与服务器配置全攻略 1. 搭建示例网站 学习搭建网站的最佳方式是通过实践操作。你可以在自己的机器上构建一个示例网站,完成后,你将安装并配置好感兴趣的部分,还能将其作为自己系统的模型,在掌握原理后删除。这样,你可以在将服务器推向互联网之前,在家中私下练习…

作者头像 李华
网站建设 2026/1/12 16:21:12

12、网站元语言与通用网关接口入门

网站元语言与通用网关接口入门 网站元语言(WML)基础 WML 是创建静态网页的强大工具,它能将复杂页面的诸多元素封装到变量、模板和自定义标签中,实现复用,同时还融合了 Perl 的强大功能。以下通过具体示例来深入了解其应用。 项目模板创建 :以创建 www.opensourceweb…

作者头像 李华
网站建设 2025/12/14 3:57:24

14、CGI编程:表单小部件、安全考量与项目实践

CGI编程:表单小部件、安全考量与项目实践 1. 表单小部件示例与方法 在Web开发中,表单小部件是与用户交互的重要工具。以下是一个简单的表单示例: <body bgcolor="#ffffff"> <h1>An Example of Form Widgets</h1> <form action="/cg…

作者头像 李华
网站建设 2025/12/14 3:57:07

18、Embperl:强大的嵌入式 Perl 工具助力 Web 开发

Embperl:强大的嵌入式 Perl 工具助力 Web 开发 1. 快速入门 在开始使用 Embperl 之前,需要了解一些基本配置。在相关目录中,扩展名为 .txt 和 .jpg 的文件是普通文件,不需要 Embperl 处理,会直接提供。加载修改后的 Apache 配置文件,使用如下命令: # /etc/init.…

作者头像 李华
网站建设 2025/12/20 10:34:18

通义万相Wan2.1视频模型重磅开源:引领AIGC视频生成技术新高度,赋能中文场景创作革新

2025年2月28日&#xff0c;阿里云开发者社区传来重磅消息——通义万相Wan2.1视频生成模型正式对外开源。这一突破性进展不仅树立了AIGC领域视频生成技术的全新标杆&#xff0c;更凭借对中文语义的深度优化和高质量视频输出能力&#xff0c;为广大开发者、创作者及企业用户带来了…

作者头像 李华