2 Windows Forms

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 29

⇒ Đổi tên thành ListStudents nó tự đổi tên trong Program.

cs
Tab Order :

● Trong C#, "Tab Order" là một tính năng quản lý thứ tự mà các control (điều khiển)
trên một form được chọn khi người dùng nhấn phím Tab. Mục đích của việc này là
để tạo ra một trải nghiệm người dùng mượt mà và logic khi đi qua các phần khác
nhau của giao diện người dùng.

● Khi bạn thiết kế một form, bạn có thể muốn người dùng có thể di chuyển một cách
dễ dàng và trực quan từ một control này sang control khác bằng phím Tab. Để làm
điều này, bạn cần chỉ định thứ tự tab - đó là số thứ tự mà bạn muốn control được
chọn. Control có thứ tự tab thấp nhất sẽ được chọn đầu tiên, và sau đó là control tiếp
theo có thứ tự cao hơn, và cứ thế cho đến khi tất cả các control trên form đều được
truy cập.

● Bạn có thể thiết lập thứ tự tab bằng cách sử dụng thuộc tính TabIndex của mỗi
control hoặc sử dụng chức năng "Tab Order" từ menu của Visual Studio để kéo và
thả các control vào vị trí mong muốn trong danh sách thứ tự tab.
KIẾN TRÚC 3 LỚP
1. KIẾN TRÚC 3 LỚP": Kiến trúc ba lớp. Đây là mô hình thiết kế
phần mềm chia ứng dụng thành ba thành phần lô-gíc chính: lớp
giao diện người dùng (UI), lớp ứng dụng (logic nghiệp vụ), và lớp
dữ liệu (lưu trữ dữ liệu).
2. "3-LAYER TÁCH RIÊNG CÁC THÀNH PHẦN UI VÀ DATA":
Trong kiến trúc ba lớp, các thành phần giao diện người dùng và
dữ liệu được tách biệt. Điều này nâng cao tính module, cho phép
phát triển, bảo trì, và mở rộng độc lập.
3. "UI: -> HIỂN THỊ! VÀ QUẢN LÍ SỰ KIỆN, TRIỆU GỌI DATA TỪ
ĐÂU ĐÓ": Lớp giao diện người dùng có trách nhiệm hiển thị thông
tin cho người dùng và quản lý sự kiện (như nhấn nút), và nó gọi
dữ liệu từ một nơi nào đó, có thể là lớp dữ liệu hoặc dịch vụ.
4. "DATA: -> CUNG CẤP DATA CHO UI, NHẬN YÊU CẦU XỬ LÍ
DATA TỪ UI: lấy hết data, search ai đó, update 1 ai đó, xóa 1 ai
đó...": Lớp dữ liệu cung cấp dữ liệu cho giao diện người dùng và
xử lý các yêu cầu từ giao diện người dùng, chẳng hạn như truy
xuất toàn bộ dữ liệu, tìm kiếm một người, cập nhật thông tin của
một người, hoặc xóa một người.
a. "- CUNG CẤP DATA CHO NHIỀU UI KHÁC: WEB,
FORMS, MOBILE": Lớp dữ liệu cũng phục vụ nhiều giao
diện người dùng khác nhau, có thể là một phần của ứng
dụng web, forms, hoặc ứng dụng di động.
b. ">>>>> RE-USE MỨC CAO": Đề cập đến khả năng tái sử
dụng cao, có nghĩa là các thành phần hoặc dịch vụ nên
được thiết kế để có thể tái sử dụng trong các phần khác
nhau của ứng dụng hoặc thậm chí là giữa các ứng dụng
khác nhau.
c. ">>>>> VIẾT THEO STYLE THƯ VIỆN - LIBRARY -
DEPENDENCY - .DLL TÁCH RỜI CHO NHIỀU NƠI
REFERENCE VÀO": Nói về việc viết mã theo phong cách
thư viện, với các phụ thuộc như file DLL (Dynamic Link
Libraries) trong C#, có thể được tham chiếu và sử dụng ở
nhiều nơi trong ứng dụng.
d. ">>>>> TÁCH PROJECT, THÊM MỚI PROJECT": Khuyến
nghị tách biệt các dự án và thêm mới dự án, có lẽ đề cập
đến việc tổ chức mã nguồn thành các dự án khác nhau để
dễ quản lý và mở rộng hơn.
"BAO NHIÊU PROJECT BẤY NHIỀU .DLL (.JAR CỦA BÊN JAVA)": Mỗi
dự án sẽ có một file DLL tương ứng, tương tự như file JAR trong Java.
Mỗi dự án biên dịch thành một thư viện riêng có thể được sử dụng bởi
các dự án khác.

Class Library

Đổi tên :
⇒ Một khi đã là thư viện thì nó phải là Public , nếu internal thì
project kia ko thể lấy project này .

Tạo class ở project Respositories


● Class Này là nguồn Data cho các UI Forms
● Chịu trách nhiệm Lấy Data từ CSDL SQLServer đem lên
● Chứa lệnh móc cơ sở dữ liệu, lấy và đẩy data về cho
Form
Sửa lại thành public
● Mình xài project GiaoLang Repositories đưa sang project
GiaoLang → Muốn xài phải tham khảo dependence
● Vì project GiaoLang cần lấy thư viện GiaoLang
Repositories để xài .
Nó đã tham chiếu thành công :
Xài kho lấy dữ liệu từ SQL Server và
hiển thị :

Làm Add một sinh viên :


Làm Update một sinh viên :
Delete tương tự Update
SelectionChanged trên DataGridView
Sự kiện này được kích hoạt mỗi khi lựa chọn trong
DataGridView thay đổi. Ví dụ, khi một người dùng chọn một
dòng, ô, hoặc nhiều ô khác nhau, sự kiện SelectionChanged sẽ
được phát ra.
Search

====================================================================
TƯ DUY THIẾT KẾ CODE-CẤU TRÚC CODE CỦA BÀI TRÊN
⇒ CHỈ CẦN THÊM 1 CLASS Ở VÙNG PHỤC VỤ DATA CHO
FORM, FORM KHÔNG CẦN ĐỔI ,NHỜ BẠN CODE .

Tạo StudentsRepositoryMySQL

Đổi thành public :

Nếu anh bạn kia dùng MySQL thay vì SQLSERVER → xử lý code


Lúc này ở ListStudent.cs* thay vì dùng SQL SERVER thì ta
chuyển qua dùng MySQL .

Và thằng bạn phải sửa code vì tên hàm thằng bạn khác mình
GHI NHỚ:INTERFACE
⇒ Để tránh sửa nhiều như vậy: → Interface (thêm,xóa,sửa)-->
bắt buộc implement
Đổi Lại là public :
⇒ DI : Dependency Injection
Tiếp theo mình tạo class MySQL

Nếu không Implement thì lỗi vì đang implement thằng cha, vì


nó yêu :
Interface : Con hơn cha là nhà có phúc
⇒ Class implement Interface thì có thể có nhiều class hơn interface .

Lúc nãy thử chạy code:

You might also like