Ở trong bài viết này, chúng ta sẽ cùng tìm hiểu về Dev
Express - một trong những bộ UI Control tốt nhất dành cho framework .NET.
Bạn đang xem: Hướng dẫn sử dụng devexpress với winform
Dev
Express là gì?
Đối với những lập trình viên .NET thì Dev
Epress là một công cụ hết sức hữu dụng, cung cấp rất nhiều control trong Visual Studio. Dev
Express không chỉ giúp thiết kế winform hay website đẹp hơn mà còn giúp cho việc lập trình được dễ dàng hơn, ta có thể thấy rõ nhất là trong việc tương tác với cơ sở dữ liệu.
Dev
Express được ra mắt lần đầu tiên vào năm 2011 và được đông đảo lập trình viên .NET sử dụng. Từ đó đến này đã trải qua rất nhiều phiên bản với nhiều nâng cấp đáng kể. Phiên bản mới nhấtt hiện nay là v18.2. Với Dev
Express ta có thể tự tạo cho mình một bộ Office riêng chỉ trong vòng một vài tiếng
Thành phần của Dev
Express
WinForms Controls: Cung cấp các control cho Win
Forms.WPF Controls: Cung cấp các control cho WPF.Silverlight Controls: Cung cấp các control cho Silverlight.Xtra
Charts: Control cung cấp các loại biểu đồ.Xtra
Reports: Cung cấp các control tạo báo cáo.XPO: Cung cấp môi trường làm việc với database.XAF: Một công nghệ mới giúp việc phát triển phần mềm một cách nhanh chóng.
Cài đặt
Yêu cầu hệ thống:
Microsoft .NET Framework từ 2.0 trở lênMicrosoft Visual Studio
SQL Server
Việc cài đặt Dev
Express rất đơn giản nên mình sẽ không nói chi tiết phần này ra, các bạn có thể tải trên trang chủ của Dev
Express https://www.devexpress.com/. Bản trial 30 ngày cho phép chúng ta tải miễn phí. Để có được nhiều control hơn ta cần phải tải bản trả phí với mức giá từ 699 - 2199$ tùy từng option.
Control của Dev
Express
Sau khi cài đặt xong, ngay khi mở Visual Studio ra chúng ta đã nhìn thấy mục chọn Template Dev
Express

Khi click vào, ta chọn được các mẫu UI Winform hay Web Application khác nhau cho project.
![]() | ![]() | ![]() |
Không những vậy, Dev
Express còn cung cấp những bộ UI tương tự Microsoft Office gồm nhiều chức năng tương tự như bản gốc.

Ta nhận thấy Visual Studio có thêm rất nhiều Control mới thay thế hầu hết các Control mặc định. Dev
Express cung cấp thêm rất nhiều Control hữu ích mà Visual Studio chưa có như: Rating
Control, Camera
Control, Image
Slider, Ribbon Control, Gallery
Control,....... Ta có thể tùy chỉnh được properties nhiều hơn cho Control và còn có một kho Icon cung cấp cho các Button.
Điểm mà mà mình thích nhất ở Dev
Express là Skin
Ribbon Gallery, với nó ta có thay đổi được rất nhiều skin đẹp, độc lạ mắt cho Winform.
Export file trong Dev
Express
private void Export
Excel_Click(object sender, Event
Args e){ Dev
Express.Xtra
Grid.Views.Grid.Grid
View View = nhan
SuGrid
Control.Main
View as Dev
Express.Xtra
Grid.Views.Grid.Grid
View; if (View != null) { View.Export
ToXlsx("Main
View
Data.xlsx"); Process excelexport = new Process(); excelexport.Start
Info.File
Name = "EXCEL.exe"; excelexport.Start
Info.Arguments = "Main
View
Data.xlsx"; excelexport.Start(); }}private void Export
PDF_Click(object sender, Event
Args e){ Dev
Express.Xtra
Grid.Views.Grid.Grid
View View = nhan
SuGrid
Control.Main
View as Dev
Express.Xtra
Grid.Views.Grid.Grid
View; if (View != null) { View.Export
ToPdf("Main
View
Data.pdf"); Process pdfexport = new Process(); pdfexport.Start
Info.File
Name = "Acro
Rd32.exe"; pdfexport.Start
Info.Arguments = "Main
View
Data.pdf"; pdfexport.Start(); }}Trong Dev
Express, ta thường thấy Grid
Control được sử dụng rất nhiều bởi vì sự tiện dụng trong cách xử lí với chúng. Mình có có một bài riêng để nói rõ hơn về Grid
Control trong Dev
Express sau. Ở đây mình có 2 function thực hiện chức năng export data từ Grid sang file định dạng .xlsx và .pdf. Với những ai đã từng làm function export data từ Data
Grid
View mặc định thì thấy các function đó khi viết tương đối dài dòng và phức tạp. Nhưng nhờ sự hỗ trợ của Dev
Express mà việc thao tác export dữ liệu trở nên nhanh chóng, dễ dàng hơn.
Đánh giá tổng quát
*Ưu điểm
Hạn chế xuất hiện nhiều form riêng lẻCó thể tự co giãn form bên trong form chính theo kích thước của form chính thay đổi
Cung cấp rất nhiều UI đẹp cho Winform, Web
Hỗ trợ rất nhiều Control hữu dụng
Giúp việc lập trình trở nên nhanh, dễ dàng hơn
Dễ quản lýCó nhiều tài liệu hỗ trợ
*Nhược điểm
Giá bản quyền cao, phiên bản đầy đủ có giá 2199$/nămCài đặt nặng
Bộ thư viện khá nặng và tốn thời gian khi load chương trình lần đầu
Trong những bài sau mình sẽ nói chi tiết hơn về Grid
Control và xây dựng một chương trình đầu tiên với Dev
Express.
Xin chào các bạn bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách thiết kế và tạo form setting tùy chọn trong lập trình C# sử dụng Tree
View và Load usercontrol Dynamic.
Trong lập trình ứng dụng, các bạn thường thấy sẽ có một form để chứa các thông tin tham số của hệ thống.
Ví dụ: ứng dụng lập trình Visual Studio
Các bạn vào Tools => Options => sẽ xuất hiện hộp thoại cho các bạn cấu hình các thông tin chung của Editor: font, color, theme, wordwrap, num Line...
Xem thêm: Phàm Làm Việc Gì Trước Phải Nghĩ Đến Hậu Quả Của Nó, Phàm Làm Việc Gì, Suy Nghĩ Đến Hậu Quả Của Nó

Các bạn thấy hình trên sẽ có hai Panel:
Một panel bên trái chức Tree
View chứa các danh sách menu
và một panel bên phải để load các usercontrol tùy chỉnh vào theo treeview menu bên trái.
Dưới đây là giao diện demo Setting Form C#:

Source code chương trình C#:
using Options
Demo
Tree.User
Control;using System;using System.Collections.Generic;using System.Component
Model;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace Options
Demo
Tree{ public partial class Form1 : Dev
Express.Xtra
Editors.Xtra
Form { public Form1() { Initialize
Component(); } private void Form1_Load(object sender, Event
Args e) { tree
List1.Data
Source = Init
Data(); tree
List1.Parent
Field
Name = "Parent
ID"; tree
List1.Key
Field
Name = "ID"; tree
List1.Tree
View
Field
Name = "Name"; tree
List1.Expand
All(); } public Data
Table Init
Data() { Data
Table table = new Data
Table(); table.Columns.Add("Parent
ID", typeof(int)); table.Columns.Add("Code", typeof(string)); table.Columns.Add("Name", typeof(string)); table.Columns.Add("ID", typeof(int)); table.Columns.Add("Image_Index", typeof(int)); table.Rows.Add(0,"NS", "Nhân Sự", 1, 0); table.Rows.Add(1,"NC", "Ngày công", 4, 3); table.Rows.Add(2,"TC", "Tăng ca", 5, 3); table.Rows.Add(1,"NNP", "Nghĩ phép năm", 6, 3); table.Rows.Add(0,"KT", "Kế Toán", 2, 1); table.Rows.Add(2,"NHT", "Năm hoạch toán", 7, 3); table.Rows.Add(2,"DK", "Định khoản", 8, 3); table.Rows.Add(0,"CDC", "Cài đặt chung", 3, 2); return table; } private void tree
List1_After
Focus
Node(object sender, Dev
Express.Xtra
Tree
List.Node
Event
Args e) { var data
Row = tree
List1.Get
Data
Row(e.Node.Id); var code
Name = data
Row.Item
Array<1> + ""; if(code
Name == "NNP") { if (!pan
Main.Controls.Contains(u
Control2.Instance)) { pan
Main.Controls.Add(u
Control2.Instance); u
Control2.Instance.Dock = Dock
Style.Fill; u
Control2.Instance.Bring
ToFront(); } else u
Control2.Instance.Bring
ToFront(); }else if(code
Name == "NC") { if (!pan
Main.Controls.Contains(u
Control3.Instance)) { pan
Main.Controls.Add(u
Control3.Instance); u
Control3.Instance.Dock = Dock
Style.Fill; u
Control3.Instance.Bring
ToFront(); } else u
Control3.Instance.Bring
ToFront(); } } private void tree
List1_Get
State
Image(object sender, Dev
Express.Xtra
Tree
List.Get
State
Image
Event
Args e) { try { int index = int.Parse(e.Node.Get
Value("Image_Index").To
String()); if (index >= 0) { e.Node
Image
Index = index; } } catch (Exception) { } } }}Thanks for watching!