Windows Form (6): Làm quen với Cơ sở dữ liệu

Bài trước: Windows Form (5): Lập trình cho Form

-----

6. Làm quen với Cơ sở dữ liệu

6.1 Cơ sở dữ liệu là gì?

Để hiểu cơ sở dữ liệu là gì? Chúng ta cùng xuất phát từ một tình huống thực tế.

Bạn là chủ một tiệm bán sách, và muốn có một phần mềm hỗ trợ cho việc quản lý tiệm sách.

Yêu cầu đối với phần mềm là:

- Cho phép nhập thông tin sách vào phần mềm, thông tin của mỗi cuốn sách gồm: tên sách, tác giả, giá nhập, giá bán, nhà xuất bản, năm xuất bản

- Xem được danh sách các cuốn sách đang có trong tiệm

- Xem được các cuốn sách đã bán theo ngày, tuần, tháng

- Xem được tổng số tiền của sách trong tiệm

- Xem được tổng số tiền sách đã bán được trong ngày, tuần, tháng

- Tìm kiếm sách theo tên, nhà xuất bản, tác giả, giá, năm xuất bản

- Biết được tình trạng mỗi cuốn sách là đã bán rồi hay chưa   

Với các yêu cầu như trên, bạn hoàn toàn có thể thực hiện được bằng phần mềm bảng tính Excel.


Tuy nhiên, dùng Excel khá vất vả và bất tiện.

Nếu có được phần mềm để thực hiện các chức năng trên thì việc thao tác sẽ đơn giản và tiện lợi hơn. Tuy nhiên, để có phần mềm thì bạn phải bỏ ra nhiều thời gian, tiền bạc và công sức. Cái gì cũng có cái giá của nó.

Dựa vào yêu cầu của phần mềm, bạn sẽ thấy là chúng ta phải lưu trữ, quản lý và khai thác thông tin liên quan đến các đối tượng: sách, tác giả và nhà xuất bản.

Nếu để thông tin của cả 3 đối tượng trên cùng một bảng (như trong Excel) thì sẽ có tình trạng thông tin bị lặp lại nhiều, khó khai thác (truy vấn), khó quản lý. Vì thực tế, chúng ta cần lưu rất nhiều thông tin.

Giải pháp là chúng ta sẽ tách thông tin của 3 đối tượng thành 3 bảng, gồm: bảng Sach, NhaXuatBan, và TacGia.

- Bảng Sach sẽ lưu các thông tin: Tên sách, Giá nhập, Giá bán, Năm xuất bản, Tác giả, Số lượng, Ngày nhập, Ngày bán, Số lượng bán.

- Bảng NhaXuatBan sẽ lưu các thông tin: Tên nhà xuất bản, Địa chỉ

- Bảng TacGia sẽ lưu các thông tin: Tên tác giả, Giới tính, Quốc tịch

Bạn có thể quan sát ở dạng bảng:


Tập hợp 3 cái bảng trên, kèm theo dữ liệu trong mỗi bảng, và một số thông tin khác sẽ tạo thành một cơ sở dữ liệu.

Vậy,

Cơ sở dữ liệu (database) là một tập hợp các dữ liệu có tổ chức, liên quan đến nhau, thường được lưu trữ và truy cập bằng hệ thống máy tính. Đơn giản hơn, cơ sở dữ liệu là một kho lưu trữ thông tin có cấu trúc, giúp chúng ta dễ dàng quản lý, tìm kiếm và cập nhật dữ liệu.

Ưu điểm của cơ sở dữ liệu:

–  Giảm sự trùng lặp thông tin xuống mức thấp nhất

–  Có thể truy xuất thông tin theo nhiều cách

–  Cho phép nhiều người cùng sử dụng một lúc

Cơ sở dữ liệu phản ánh một phần của thế giới thật.

Có nhiều loại cơ sở dữ liệu, trong ứng dụng này, chúng ta sẽ làm quen với “Cơ sở dữ liệu quan hệ”, hoặc bạn có thể gọi là cơ sở dữ liệu dạng bảng cho trực quan, dễ hiểu (từ đây gọi tắt là cơ sở dữ liệu)

Như vậy, chúng ta có thể hiểu đơn giản như sau:

- Dữ liệu được lưu trong các bảng (các table)

- Một cơ sở dữ liệu là một tập hợp của nhiều bảng dữ liệu

- Giữa các bảng dữ liệu này có thể có mối liên hệ với nhau, gọi là các quan hệ.

Để tạo, quản lý, và khai thác cơ sở dữ liệu, chúng ta cần dùng tới một phần mềm có tên gọi chung là Hệ quản trị cơ sở dữ liệu (DataBase Management System - DBMS).

Có rất nhiều Hệ quản trị cơ sở dữ liệu, ví dụ:

MySQL

PostgreSQL

Microsoft SQL Server

SQLite

MongoDB

Redis

Oracle

MariaDB

Elasticsearch

DynamoDB

Firebase

Cloud Firestore

Cassandra

Neo4j

IBM DB2

CouchDB

Couchbase

 

 

 

6.2 Tải và cài đặt Microsoft SQL Server

Vào trang web để tải Microsoft SQL Server về máy, nên chọn bản miễn phí (Express) https://www.microsoft.com/en-us/sql-server/sql-server-downloads

Thực hiện cài đặt như một chương trình thông thường, chọn chế độ cài Basic.

Ở chế độ mặc định, chương trình cài đặt sẽ cài MS SQL Server vào ổ đĩa C:\. Tuy nhiên, nếu ổ đĩa C:\ sắp đầy dữ liệu thì bạn có thể  cài vào ổ đĩa khác.

Vì các Hệ quản trị cơ sở dữ liệu thường làm việc dưới dạng một dịch vụ (services), nên sau khi cài đặt thành công, bạn sẽ không tìm thấy nó trong thanh Starts, hoặc màn hình Desktop của Windows.

Để kiểm tra cài đặt thành công hay chưa, bạn làm như sau:

- Sử dụng File Explorer, tìm tới thư mục cài đặt xem đã có chương trình MS SQL Server hay chưa?

Ví dụ,

- Nếu cài đặt thành công, MS SQL Server sẽ được đăng ký như là một dịch vụ trong hệ thống Windows. Mở cửa sổ Run > gõ services.msc (để mở cửa sổ Services của Windows) > Bạn sẽ thấy tên MS SQL Server trong cửa sổ > để ý trạng thái ở 2 cột Status (cho biết dịch vụ này đang chạy hay không) và cột Startup Type (chế độ khởi động của dịch vụ, thường là tự động khởi động với hệ điều hành).

- Để chạy dịch vụ MS SQL Server, trong cửa sổ Services > chuột phải vào MS SQL Server > chọn Start > nếu chạy thành công bạn sẽ thấy cột Status chuyển thành Running.

- Để tắt dịch vụ MS SQL Server, trong cửa sổ Services > chuột phải vào MS SQL Server > chọn Stop > nếu tắt thành công bạn sẽ thấy cột Status mất chữ Running.

- Ngoài ra, bạn cũng có thể tắt/mở dịch vụ MS SQL Server trong Task Manager > tab Services.

Để kiểm tra xem trên máy tính có đang chạy đúng bản MS SQL Server hay không? Bạn làm như sau:

Mở Task Manager > chọn tab Services > bấm chuột phải vào MS SQL Server (đang có Status là Running) > chọn Open Services > để mở cửa sổ Services > trong cửa sổ Services > chuột phải vào MS SQL Server > chọn Properties > trong cửa sổ Properties, mục Path to executable sẽ chứa đường dẫn tập tin của MS SQL Server trong ổ đĩa cứng.

-----

Cập nhật: 25/11/2024

Bài sau: Windows Form (7): Thao tác với DBMS bằng dòng lệnh (1)

Windows Form (5): Lập trình cho Form

Bài trước: Windows Form (4): Thiết kế Form

-----

5. Lập trình cho Form

5.1 Hàm Main() trong Windows Form

Như ở phần trước đã đề cập, hàm Main() là đầu vào của một ứng dụng. Khi bạn chạy ứng dụng, hệ điều hành sẽ thực thi các đoạn mã trong hàm Main().

Ở phần trước, chúng ta đã viết đoạn mã tạo Form vào trong hàm Main(). Cách làm này chưa chuyên nghiệp. Ngoài ra, class Program cũng chưa được đặt trong namespace QuanLySach, do vậy trong hàm Main() sẽ không gọi được MainForm().

Ở phần này, chúng ta sẽ viết lại mã nguồn của hàm Main() cho chuyên nghiệp hơn.

namespace QuanLySach

{

            static class Program

            {

            // thuộc tính thiết lập cho luồng chính

            // của ứng dụng là Single-Threaded Apartment (STA) thread

            [STAThread]

            static void Main()

            {

            // cho phép ứng dụng sử dụng chế độ đồ họa của hệ điều hành

            Application.EnableVisualStyles();

            // tắt chế độ tương thích khi hiển thị văn bản

            // để hiển thị văn bản sắc nét hơn ở các hệ thống hiện đại

           Application.SetCompatibleTextRenderingDefault(false);

            // tạo, hiển thị MainForm, và chờ tương tác từ người dùng

            Application.Run(new MainForm());

            }

            }

}

Lưu lại chương trình và chạy thử, bạn sẽ thấy MainForm đã xuất hiện.


Lớp Application chính là một lớp con của System.Windows.Forms. Lớp Application cung cấp các thuộc tính và phương thức kiểu static để quản lý ứng dụng, ví dụ: chạy và dừng ứng dụng; lấy thông tin về ứng dụng.

Ghi chú: sau khi chúng ta chèn thêm hình ảnh cho MainForm, Visual Studio đã chèn thêm một tập tin vào dự án, tên tập tin là MainForm.rexs. Tập tin này được sử dụng để lưu trữ các tài nguyên đi kèm (như hình ảnh, các văn bản trên các điều khiển, font chữ,...) của Form tương ứng (MainForm).

5.2 Lập trình xử lý cho nút Thoát

Nhắc lại, mỗi form luôn có 2 tập tin mã nguồn, ví dụ MainForm.cs và MainForm.Designer.cs. Ngoài ra, có thể có tập tin thứ 3 MainForm.rexs để lưu trữ các tài nguyên đi kèm.

MainForm.Designer.cs chứa mã nguồn của quá trình thiết kế form, như tên, thuộc tính của các nút; tên thuộc tính của các nhãn (label),..v.v. Lập trình viên không nên sửa mã nguồn trong tập tin này. Bạn có thể mở mã nguồn của tập tin này để quan sát nội dung bên trong: chuột phải vào MainForm.Designer.cs trong Solution Explorer > chọn View Code.

Để lập trình xử lý cho form, lập trình viên sẽ viết vào trong tập tin MainForm.cs.

Hiểu đơn giản, một ứng dụng trong Windows Form sẽ hoạt động theo kiểu: chương trình sẽ hiển thị ra các cửa sổ (form), trong đó có các nút điều khiển (control, button). Form sẽ chờ người dùng tương tác (bấm nút) vào các điều khiển và thực hiện các xử lý tương ứng. Lập trình viên sẽ viết mã nguồn để thực hiện các xử lý khi người dùng tương tác vào điều khiển.

Ví dụ, chúng ta sẽ viết xử lý khi người dùng bấm vào nút Thoát (có Name là btnExit). Cách thực hiện:

- Trong cửa sổ thiết kế của MainForm, chuột phải vào nút Thoát > chọn Properties

- Trong cửa sổ Properties > chọn biểu tượng Events (biểu tượng có hình tia chớp)

- Tìm tới sự kiện Click > bấm đúp chuột vào chữ Click > Visual Studio sẽ tự động chèn một dòng mã xử lý sự kiện vào tập tin MainForm.Designer.cs

this.btnExit.Click += new System.EventHandler(this.btnExit_Click);

Và chèn một phương thức vào tập tin MainForm.cs

private void btnExit_Click(object sender, EventArgs e)

{

 

}

Chúng ta sẽ viết mã nguồn vào phương thức btnExit_Click(): sẽ tắt ứng dụng khi người dùng bấm vào nút Thoát.

private void btnExit_Click(object sender, EventArgs e)

{

            Application.Exit();

}

Lưu mã nguồn và chạy chương trình để kiểm tra chức năng này. Nếu bạn bấm vào nút Thoát mà chương trình đóng lại là được.

Vậy là chúng ta đã biết cách lập trình cho các sự kiện của Form.

5.3 Bài tập

1. Application trong đoạn mã sau mang ý nghĩa gì? Phát biểu nào không đúng?

Application.Run(new MainForm());

A. Application chính là một class con của System.Windows.Forms

B. Application cung cấp các thuộc tính kiểu static để quản lý ứng dụng,

C. Application cung cấp các phương thức kiểu static để quản lý ứng dụng,

D. Application là một object do người dùng tạo ra

2. Khi làm việc với một form tên là MainForm, bạn thường sẽ làm việc với 3 tập tin nào?

A. MainForm.sln, MainForm.Designer.cs, MainForm.rexs

B. MainForm.sln, MainForm.Designer.proj, MainForm.cs

C. MainForm.cs, MainForm.Designer.cs, MainForm.rexsource

D. MainForm.cs, MainForm.Designer.cs, MainForm.rexs

3. Để lập trình xử lý cho form có tên là MainForm, lập trình viên sẽ viết mã nguồn vào trong tập tin nào?

A. MainForm.csharp

B. MainForm.cs

C. MainForm.sln

D. MainForm.cpp

4. Viết lại và chạy được các đoạn mã nguồn

trong bài viết.

-----

Gợi ý trả lời

1(D), 2(D), 3(B)

-----

Cập nhật: 21/11/2024

Bài sau: Windows Form (6): Làm quen với Cơ sở dữ liệu

10.000 giờ

Để biết làm một nghề, thời gian dành cho nó khoảng 10.000 giờ.

Một hành trình khá dài, đầy thử thách nhưng cũng chứa đựng nhiều điều thú vị.

Sau mỗi giờ, bạn sẽ thấy trưởng thành hơn, tự tin hơn về bản thân, và quan trọng hơn bạn đã học được kỹ năng học, rèn được tính kiên trì và không thấy mình vô dụng. Nó là hành trang để bạn có thể bước vào bất kỳ lĩnh vực nào sau này.

Mời bạn bắt đầu, từng giờ một!

---

     [GIỜ     :     NỘI DUNG HỌC]









Windows Form (4): Thiết kế Form

Bài trước: Windows Form (3): Tạo Form đầu tiên

-----
4. Thiết kế Form

Nhắc lại vài nội dung chính đã học được cho tới thời điểm này:

- Tạo được solution

- Tạo và thêm project vào solution

- Viết được hàm Main(), là điểm bắt đầu của chương trình

- Tạo ra được cửa sổ (form) bằng cách viết mã

- Sau khi tạo cửa sổ, bạn đã tạo ra các nút (các điều khiển, control), và gắn nút vào cửa sổ

Bạn đã bao giờ nghe câu “muốn nhanh thì phải từ từ” chưa? Nghe có vẻ vô lý nhưng có lý đấy. Bạn cứ học từng phần, từng phần nhỏ, ghép lại thì sẽ thành một cái lớn. Chứ cứ nóng vội, đi tắt đón đầu thì chỉ rơi vào trạng thái hoang mang, căng thẳng, không thể biết, hiểu và thực hành được cái gì hết, cơ thể sẽ rơi vào trạng thái suy sụp, mất định hướng và bỏ cuộc.

Cứ đọc đi đọc lại nhiều lần, cố gắng hệ thống lại kiến thức để hiểu, rồi thực hành thật nhiều là ổn.

Quay trở lại bài học.

Ở bài học trước, để tạo ra cửa sổ, các nút, bạn phải lập trình rất nhiều, mất nhiều thời gian và khó thực hiện.

Visual Studio và Windows Form có trang bị cho chúng ta một cách làm nhanh hơn, dễ dàng hơn, đó là thiết kế giao diện bằng hình thức kéo-thả, và các thiết lập trực quan.

4.1 Tạo Form bằng công cụ

Để thêm một cửa sổ vào dự án, tại cửa sổ Solution Explorer, chuột phải vào dự án (ví dụ QuanLySach) > chọn Add > chọn New Item > chọn Form (Windows Forms) > đặt tên cho Form ở ô Name (ví dụ MainForm) > bấm nút Add.

Sau khi tạo được MainForm, bạn sẽ thấy Visual Studio tự động thêm các references cần thiết khác, như System.Data, System.Xml. Trong dự án xuất hiện thêm các tập tin MainForm.cs, MainForm.Designer.cs. Bản thiết kế của MainForm xuất hiện ở cửa sổ bên trái, cho phép bạn bắt đầu thiết kế các thành phần cho cửa sổ.

Chúng ta cùng tìm hiểu sơ qua mã nguồn của 2 tập tin: MainForm.cs và MainForm.Designer.cs.

[MainForm.cs]

namespace QuanLySach

{

            public partial class MainForm : Form

            {

                        public MainForm()

                        {

                                    InitializeComponent();

                        }

            }

}

- Phần using có khai báo để sử dụng khá nhiều thư viện lạ, bạn cũng chưa cần biết nó dùng để làm gì? Cứ để nguyên hoặc xóa những thư viện lạ đi, sau này thiếu thì bổ sung sau. Ví dụ, bạn thử xóa các dòng using mà bạn chưa biết, chỉ để lại:

using System;

using System.Drawing;

using System.Windows.Forms;

Dòng mã:

- namespace QuanLySach { }

Từ khóa namespace (không gian tên) được sử dụng để khai báo một phạm vi, trong đó có chứa các thành phần có liên quan với nhau, và để tránh hiện tượng xung đột tên.

- public partial class MainForm : Form { }

Tạo ra lớp mới, có tên là MainForm. Lớp MainForm kế thừa lớp Form, do vậy MainForm sẽ có tất cả các thuộc tính và phương thức mà lớp Form đang có.

Từ khóa partial để thông báo là lớp MainForm sẽ được định nghĩa ở nhiều nơi khác nhau (ở nhiều tập tin khác nhau). Bạn có thể mở tập tin MainForm.Designer.cs để thấy một phần định nghĩa nữa của lớp MainForm.

Kiểu truy cập của lớp MainForm là public, nghĩa là bạn có thể truy cập và sử dụng tới lớp MainForm từ bên trong và bên ngoài tập tin (có thiết lập tham chiếu). 

- public MainForm()

                        {

                                    InitializeComponent();

                        }

Hàm khởi tạo, được tự động gọi và thực thi khi bạn khai báo một đối tượng thuộc lớp MainForm. Khởi chạy một số thành phần cơ bản bằng hàm InitializeComponent().

[MainForm.Designer.cs]

Trong Visual Studio tập tin MainForm.Designer.cs hiển thị ở 2 dạng, dạng đồ họa và dạng mã nguồn. Mặc định thì sẽ hiển thị ở kiểu đồ họa (cho phép bạn thiết kế giao diện), ví dụ MainForm.cs[Design] .Để hiển thị ở dạng mã nguồn, bạn bấm chuột phải vào tập tin ở khung Solution Explorer và chọn View Code.

Dạng mã nguồn của [MainForm.Designer.cs]

namespace QuanLySach

{

            partial class MainForm

            {

            /// <summary>

            /// Required designer variable.

            /// </summary>

            private System.ComponentModel.IContainer components = null;

 

            /// <summary>

            /// Clean up any resources being used.

            /// </summary>

                /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>

            protected override void Dispose(bool disposing)

            {

            if (disposing && (components != null))

            {

                        components.Dispose();

            }

            base.Dispose(disposing);

            }

 

            #region Windows Form Designer generated code

 

            /// <summary>

            /// Required method for Designer support - do not modify

            /// the contents of this method with the code editor.

            /// </summary>

            private void InitializeComponent()

            {

            this.components = new System.ComponentModel.Container();

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            this.ClientSize = new System.Drawing.Size(800, 450);

            this.Text = "MainForm";

            }

 

            #endregion

            }

}

Giải thích một số dòng mã ở trên:

- namespace QuanLySach { }

Tên của namespace là QuanLySach, cùng namespace với mã nguồn trong tập tin MainForm.cs.

- partial class MainForm { }

Mã nguồn này là một phần khác (partial) của lớp MainForm đã được định nghĩa ở trong MainForm.cs.

- private System.ComponentModel.IContainer components = null;

Khai báo một biến có tên là components, kiểu truy cập private, thuộc kiểu System.ComponentModel.IContainer. Thành phần thiết kế của Visual Studio sẽ sử dụng biến này để lưu trữ thông tin của các phần tử đồ họa, như button, text box.

- protected override void Dispose(bool disposing)

    {      

            if (disposing && (components != null))

            {

                        components.Dispose();

            }

            base.Dispose(disposing);

    }

Dispose nghĩa là gỡ bỏ. Phương thức Dispose() được sử dụng để giải phóng các tài nguyên mà Form có thể đang sử dụng, như bộ nhớ, con trỏ file. Kiểu truy cập của hàm là protected, không có kiểu trả về (void), đây là một hàm chồng (override) dựa trên hàm cơ sở là Dispose(). 

- #region Windows Form Designer generated code

 

            /// <summary>

            /// Required method for Designer support - do not modify

            /// the contents of this method with the code editor.

            /// </summary>

            private void InitializeComponent()

            {

            // khởi tạo đối tượng container > quản lý vòng đời của các thành phần

            this.components = new System.ComponentModel.Container();

            // tự động điều chỉnh kích thước các phần tử theo kích thước của font

            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

            // thiết lập kích thước của Form

this.ClientSize = new System.Drawing.Size(800, 450);

// tiêu đề của Form

            this.Text = "MainForm";

            }

 

            #endregion

Mã nguồn trong tập tin MainForm.Designer.cs do thành phần thiết kế của Visual Studio tạo ra; khi bạn thiết kế, thay đổi trên giao diện đồ họa (trên Form) thì mã nguồn sẽ được sinh ra và cập nhật tự động. Bạn không nên trực tiếp thay đổi mã nguồn trong tập tin MainForm.Designer.cs.

Bạn có thể thêm các điều khiển vào Form và quan sát mã nguồn sẽ sinh ra ở trong MainForm.Designer.cs.

4.2 Làm quen với thiết kế Form

Để thiết kế Form, chúng ta sẽ sử dụng bộ công cụ Toolbox ở khung bên trái, màn hình Form ở giữa và cửa sổ thiết lập các thuộc tính (Properties) bên phía phải.

Bạn sẽ kéo các công cụ từ Toolbox thả vào Form.

Để thiết lập thuộc tính cho thành phần nào thì bấm chuột phải vào nó và chọn Properties.

Chúng ta sẽ cùng thiết kế cho form chính của ứng dụng QuanLySach:

- Đặt tiêu đề cho form là Quan ly sach: chuột phải vào MainForm > chọn Properties > trong cửa sổ Properties > chọn mục Text > nhập giá trị là Quan ly sach

- Thiết lập kích thước cho MainForm: chọn mục Size > thiết lập width = 850, height = 510. Đơn vị ngầm hiểu là px.

- Tạo thư mục Resources trong project để chứa hình ảnh: Chuột phải vào project > chọn Add > New Folder > nhập tên cho thư mục (Resources)

- Chọn một ảnh nền bất kỳ, ví dụ: kiểu ảnh: bmp; kích thước (tối thiểu): width: 850px, height: 600px. Chép ảnh nền vào thư mục Resources. Vào mục BackgroundImage > tìm tới thư mục Resources > chọn hình ảnh. Vào mục BackgroundImageLayout > chọn Stretch để căng ảnh sao cho phủ kín giao diện.

Chèn thêm nút Sách

- Vào Toolbox > kéo button và thả vào MainForm. Vào mục Name, đặt tên là btnBooks.

- Vào mục font: chọn kiểu font là Monotype Corsiva, Size: 17pt; Bold: True. ForeColor: SteelBlue; Text: Sách. Size: 150, 50

Chèn thêm nút Thoát

- Vào Toolbox > kéo button và thả vào MainForm. Vào mục Name, đặt tên là btnExit.

- Vào mục font: chọn kiểu font là Monotype Corsiva, Size: 17pt; Bold: True. ForeColor: SteelBlue; Text: Thoát. Size: 150, 50

Chèn label Tiệm sách cũ Hoa Giấy

- Vào Toolbox > kéo label và thả vào MainForm. Vào mục Name, đặt tên là lblTiemSach.

- Vào mục font: chọn kiểu font là Monotype Corsiva, Size: 40pt; Bold: True. ForeColor: SteelBlue; BackColor: Transparent. Text: Tiệm sách cũ Hoa Giấy.

4.3 Bài tập

1. Từ khóa partial trong dòng mã sau, có ý nghĩa gì? 

public partial class MainForm : Form { }

A. MainForm là lớp kế thừa của Form

B. Lớp MainForm được định nghĩa ở nhiều nơi

C. Kiểu truy cập của MainForm

D. Lớp rỗng

2. Dòng mã sau có ý nghĩa gì?

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

A. Tự động điều chỉnh kích thước các phần tử theo kích thước của font

B. Thiết lập kích thước font

C. Đặt chế độ kích thước font tự động

D. Dùng font của hệ thống

3. Trong thiết kế giao diện Windows Form, thuộc tính ForeColor dùng để:

A. Định dạng màu nền

B. Định dạng màu chữ

C. Định dạng độ trong suốt của nền

D. Định dạng màu đường viền

4. Viết lại và chạy được các đoạn mã nguồn trong bài viết. 

-----

Gợi ý trả lời

1(B), 2(A), 3(B)

-----

Cập nhật: 19/11/2024

Bài sau: Windows Form (5): Lập trình cho Form