Giáo trình Lập trình Windows Forms với C#.NET (Phần 2)

CHƢƠNG 6: ĐIỀU KHIỂN CHỨA CÁC ĐIỀU KHIỂN KHÁC  
6.1. Điều khiển GroupBox  
GroupBox là dạng điều khiển chứa, có thể chứa các điều khiển khác hiển thị trên  
form, giúp cho việc thiết kế giao diện của form dễ nhìn và khoa học hơn. GroupBox  
không hỗ trợ thanh trượt (ScrollBar). GroupBox có thể có tiêu đề hiển thị, tiêu đề này  
được thiết lập trong thuộc tính Text. Nếu không muốn hiển thị tiêu đề, lập trình viên có  
thể thiết lập chuỗi rỗng trong thuộc tính Text. Điều khiển GroupBox được đặt trong  
nhóm Containers của cửa sổ Toolbox như hình 6.1.  
Hình 6.1: Điều khiển GroupBox trong cửa sổ Toolbox  
Thông thường GroupBox sử dụng để nhóm điều khiển RadioButton (xem mục  
3.5.2 của chương 3).  
Một số thuộc tính thường dùng của GroupBox:  
Bảng 6.1: Bảng mô tả các thuộc tính của GroupBox  
Thuộc tính  
Name  
Mô tả  
Đặt tên cho GroupBox  
Text  
Chuỗi hiển thị  
Font  
Thiết lập kiểu chữ, kích thước chữ, ..  
Thiết lập màu chữ hiển thị  
Thiết lập màu nền của GroupBox  
Mang giá trị True hoặc False.  
- Nếu là True: Hiển thị GroupBox  
- Nếu là False: Không hiển thị GroupBox  
Mang giá trị True hoặc False.  
ForeColor  
BackColor  
Visible  
AutoSize  
176  
- Nếu là True: GroupBox tự động thay đổi  
kích thước để có thể hiển thị hết các điều  
khiển chứa bên trong  
- Nếu là False: GroupBox có kích thước  
như lập trình viên thiết lập.  
AutoSizeMode  
Quy định cách thức điều khiển thay đổi kích  
thước.  
- GrowAndShrink: GroupBox có thể co và  
giãn  
- GrowOnly: Mặc định, chỉ giãn lớn  
Khi thiết lập giá trị thuộc tính cho GroupBox trong bảng 6.1, thì những điều  
khiển như: RadioButton, TextBox, Label, … nếu nằm trong GroupBox cũng sẽ có  
những giá trị thuộc tính tương tự như của GroupBox.  
Ví dụ 6.1: Viết chương trình định dạng chuỗi văn bản, thiết kế giao diện chương trình  
như hình 6.2.  
Hình 6.2: Giao diện forn định dạng chuỗi ví dụ 6.1  
Yêu cầu: Khi người dùng nhập chuỗi văn bản trong TextBox thì Label “Chuỗi định  
dạng” sẽ hiển thị chuỗi văn bản vừa nhập. Khi nhấp chuột chọn các Radio trong  
GroupBox “Màu” và GroupBox “Kiểu hiển thị” thì chuỗi định dạng sẽ thay đổi định  
dạng tương ứng với lựa chọn của người dùng.  
Bước 1: Thiết kế giao diện chương trình. Kéo các điều khiển: Label, GroupBox,  
RadioButton, TextBox từ cửa sổ Toolbox vào form như hình 6.3.  
177  
textBox1  
Hình 6.3: Giao diện form sau khi thêm các điều khiển vào form  
Bước 2: Thiết lập giá trị thuộc tính cho các điều khiển trong cửa sổ Properties  
- label1:  
Thuộc tính Text: “Định dạng chuỗi”  
Thuộc tính Size: 14  
Thuộc tính FontStyle: Bold  
- label2:  
Thuộc tính Text: “Nhập chuỗi muốn định dạng:”  
- label3:  
Thuộc tính Text: “Chuỗi định dạng”  
Thuộc tính Name: lblChuoiDinhDang  
- textBox1:  
Thuộc tính Name: txtNhapChuoi  
- groupBox1:  
Thuộc tính Text: “Màu”  
- groupBox2:  
Thuộc tính Text: “Kiểu hiển thị”  
- groupBox3:  
Thuộc tính Text: “Chuỗi sau khi định dạng”  
- radioButton1:  
Thuộc tính Name: radXanh  
- radioButton2:  
Thuộc tính Name: radDo  
- radioButton3:  
178  
Thuộc tính Name: radDen  
- radioButton4:  
Thuộc tính Name: radInDam  
- radioButton5:  
Thuộc tính Name: radInNghieng  
- radioButton6:  
Thuộc tính Name: radGachChan  
- button1:  
Thuộc tính Name: btnThoat  
Thuộc tính Text: “Thoát”  
Bước 3: Viết mã lệnh cho điều khiển  
- Sự kiện Click của nút btnThoat:  
privatevoid btnThoat_Click(object sender, EventArgs e)  
{
Close();  
}
- Sự kiện TextChanged của txtNhapChuoi:  
private void txtNhapChuoi_TextChanged(object sender, EventArgs  
e)  
{
lblChuoiDinhDang.Text = txtNhapChuoi.Text;  
}
- Sự kiện CheckedChanged của radXanh:  
private void radXanh_CheckedChanged(object sender, EventArgs  
e)  
{
if (radXanh.Checked == true)  
{
lblChuoiDinhDang.ForeColor = Color.Blue;  
}
}
- Sự kiện CheckedChanged của radDo:  
private void radDo_CheckedChanged(object sender, EventArgs e)  
{
if (radDo.Checked == true)  
{
lblChuoiDinhDang.ForeColor = Color.Red;  
}
}
179  
- Sự kiện CheckedChanged của radDen:  
private void radDen_CheckedChanged(object sender, EventArgs e)  
{
if (radDen.Checked == true)  
{
lblChuoiDinhDang.ForeColor = Color.Black;  
}
}
- Sự kiện CheckedChanged của radInDam:  
private void radInDam_CheckedChanged(object sender, EventArgs  
e)  
{
if (radInDam.Checked == true)  
{
lblChuoiDinhDang.Font = new  
System.Drawing.Font("Microsoft Sans Serif", 12F,  
System.Drawing.FontStyle.Bold);  
}
}
- Sự kiện CheckedChanged của radInNghieng:  
private void radInNghieng_CheckedChanged(object sender,  
EventArgs e)  
{
if (radInNghieng.Checked == true)  
{
lblChuoiDinhDang.Font = new  
System.Drawing.Font("Microsoft Sans Serif", 12F,  
System.Drawing.FontStyle.Italic);  
}
}
- Sự kiện CheckedChanged của radGachChan:  
private void radGachChan_CheckedChanged(object sender,  
EventArgs e)  
{
if (radGachChan.Checked == true)  
{
lblChuoiDinhDang.Font = new  
System.Drawing.Font("Microsoft Sans Serif", 12F,  
System.Drawing.FontStyle.Underline);  
}
}
180  
6.2. Điều khiển Panel  
Cũng như GroupBox, Panel là một điều khiển dùng để chứa các điều khiển khác.  
Panel có các thuộc tính AutoSize, AutoSizeMode như GroupBox và thuộc tính đường  
viền BorderStyle như Label.  
Điểm khác biệt của Panel với GroupBox là điều khiển Panel không có tiêu đề mô  
tả (không có thuộc tính Text) và có thanh trượt ScrollBar ngang và ScollBar dọc (có  
thuộc tính AutoScroll).  
Điều khiển Panel đặt trong nhóm Containers của cửa sổ Toolbox như hình 6.4  
Hình 6.4: Điều khiển Panel trong cửa sổ Toolbox  
Một số thuộc tính thường dùng của Panel:  
Bảng 6.2: Bảng mô tả các thuộc tính của Panel  
Thuộc tính  
Mô tả  
AutoScroll  
Mang giá trị True hoặc False.  
- Nếu là True: Panel tự động xuất hiện  
thanh trượt khi kích thước Panel không  
thể hiển thị hết các điều khiển chứa bên  
trong  
- Nếu là False: Panel sẽ không hiển thị  
thanh trượt  
BorderStyle  
Kiểu đường viền của Panel khi hiển thị. Có 3  
giá trị: None, FixedSingle và Fixed3D  
- None: Không hiển thị đường viền  
- FixedSingle:Quanh Panel sẽ hiển thị một  
đường viền đơn.  
- Fixed3D: Hiển thị đường viền của Panel  
dạng 3 chiều.  
181  
6.3. Điều khiển FlowLayoutPanel  
FlowLayoutPanel là lớp con của điều khiển Panel, do đó có thể chứa các điều  
khiển khác như Panel. Mục đích chính của FlowLayoutPanel là giúp bố trí các điều  
khiển trên form một cách có tổ chức và khoa học. Khi thêm một điều khiển nào đó vào  
FlowLayoutPanel thì FlowLayoutPanel sẽ tự động sắp xếp các điều khiển đặt bên  
trong theo quy tắc định trước và đồng thời cũng thay đổi kích thước của các điều khiển  
bên trong cho phù hợp với kích thước của FlowLayoutPanel. Vì vậy có thể nói điều  
khiển FLowLayoutPanel là điều khiển hỗ trợ tuyệt vời trong việc thiết kế giao diện  
người dùng. Điều khiển FlowLayoutPanel nằm trong nhóm Containers của cửa sổ  
Toolbox như hình 6.5.  
Hình 6.5: Điều khiển FlowLayoutPanel trên cửa sổ Toolbox  
Điều khiển FlowLayoutPanel cũng hỗ trợ dạng thanh trượt (ScrollBar) như  
Panel, khi thuộc tính AutoScroll được thiết lập là True thì khi kích thước các điển  
khiển được chứa vượt ngoài kích thước FlowLayoutPanel, thì FlowLayoutPanel sẽ  
hiển thị thanh trượt.  
Việc bố trí các điều khiển khi thêm vào FlowLayoutPanel như thế nào là do  
thuộc tính FlowDirection quy định. Thuộc tính tính mang 4 giá trị cho phép các điều  
khiển lần lượt thêm vào theo 4 hướng: từ trái qua phải (LeftToRight), từ phải qua trái  
(RightToLeft), từ trên xuống (TopDown) và từ dưới lên (BottomUp). Các điều khiển  
được thêm vào đến khi vượt ngoại phạm vi của FlowLayoutPanel, nếu muốn các điều  
khiển tự động bố trí xuống dòng mới hoặc sang một cột mới như các hình 6.6, hình  
6.7, hình 6.8 và hình 6.9, thì cần phải thiết lập thuộc tính WrapContents là True. Còn  
nếu thuộc tính WrapContents là False thì FLowLayoutPanel sẽ hiển thị thanh trượt  
(thuộc tính AutoScroll là True) để hiển thị các điều khiển nằm ngoài phạm vi.  
Thuộc tính FlowDirection là LeftToRight:  
182  
Hình 6.6: Bố trí điều khiển từ trái sang phải với WrapContents là True  
Thuộc tính FlowDirection là RightToLeft:  
Hình 6.7: Bố trí điều khiển từ phải sang trái với WrapContents là True  
Thuộc tính FlowDirection là TopDown:  
Hình 6.8: Bố trí điều khiển từ trên xuống dưới với WrapContents là True  
Thuộc tính FlowDirection là BottomUp:  
Hình 6.9: Bố trí điều khiển từ dưới lên trên với WrapContents là True  
Một số thuộc tính thường dùng của FLowLayoutPanel:  
183  
Bảng 6.3: Bảng mô tả các thuộc tính của FLowLayoutPanel  
Thuộc tính  
Mô tả  
AutoScroll  
Mang giá trị True hoặc False.  
- Nếu là True: FLowLayoutPanel tự động xuất hiện thanh  
trượt khi kích thước Panel không thể hiển thị hết các điều  
khiển chứa bên trong  
- Nếu là False: FLowLayoutPanel sẽ không hiển thị thanh  
trượt  
BorderStyle  
Kiểu đường viền của FLowLayoutPanel khi hiển thị. Có 3 giá  
trị: None, FixedSingle và Fixed3D  
- None: Không hiển thị đường viền  
- FixedSingle:Quanh FLowLayoutPanel sẽ hiển thị một  
đường viền đơn.  
- Fixed3D: Hiển thị đường viền của FLowLayoutPanel  
dạng 3 chiều.  
FlowDirection Cách thức bổ trí các điều khiển khi các điều khiển nằm ngoài  
phạm vi của FLowLayoutPanel. Bao gồm 4 giá trị: LeftToRight,  
RightToLeft, TopDown, BottomUp  
WrapContents Mang giá trị True hoặc False.  
- Nếu là True: Các điều khiển vượt ngoài kích thước  
FLowLayoutPanel sẽ tự động bố trí trên một dòng mới  
hoặc một cột mới  
- Nếu là False: FLowLayoutPanel sẽ xuất hiện thanh trượt  
để hiển thị các điều khiển ngoài kích thuốc của  
FLowLayoutPanel (với thuộc tính AutoSroll là True).  
Nếu thuộc tính AutoSroll là False thì các điều khiển nằm  
ngoài kích thước sẽ bị ẩn đi.  
Phương thức thường dùng của FLowLayoutPanel:  
Bảng 6.4: Bảng mô tả các phương thức của FLowLayoutPanel  
Phƣơng thức  
Mô tả  
Controls.Add  
Phương thức có chức năng thêm điều khiển vào  
FlowLayoutPanel  
Ví dụ 6.2: Thiết kế giao diện chương trình gồm có 1 PictureBox và 1  
FlowLayoutPanel như hình 6.10. Với FlowLayoutPanel chứa danh sách các hình. Khi  
người dùng nhấp chuột chọn hình nào trong FlowLayoutPanel thì hình đó sẽ hiển thị  
trên PictureBox.  
184  
Hình 6.10: Giao diện form hiển thị hình ví dụ 6.2  
Hướng dẫn:  
Bước 1: Thiết kế giao diện chương trình. Kéo các điều khiển FlowLayoutPanel,  
PictureBox và ImageList và form như hình 6.11.  
Hình 6.11: Giao diện form sau khi thêm PictureBox, FlowLayoutPicture và  
ImageList  
Bước 2: Thiết lập giá trị thuộc tính cho điều khiển trong cửa sổ Properties  
- Form1:  
Thuộc tính Text: “FlowLayoutPanel”  
- pictureBox1:  
Thuộc tính Name: myPictureBox  
- flowLayoutPanel1:  
Thuộc tính Name: myFlowLayoutPanel  
Thuộc tính BorderStyle: FixSingle  
Thuộc tính AutoScroll: True  
185  
Thuộc tính WrapContents: False  
- imageList1:  
Thuộc tính Name: myImageList  
Thuộc tính ImageSize: 256, 256  
Thuộc tính Images: Thêm một số hình ảnh vào myImageList như hình 6.12  
Hình 6.12: Cửa sổ thêm hình cho myImageList  
Bước 3: Viết mã lệnh cho điều khiển  
- Sự kiện Load của Form1:  
private void Form1_Load(object sender, EventArgs e)  
{
for (int i = 0; i < myImageList.Images.Count; i++)  
{
PictureBox pic = new PictureBox();  
pic.Image = myImageList.Images[i];  
pic.Size = new Size(50, 50);  
pic.Click += new EventHandler(Form1_Click);  
myFlowLayoutPanel.Controls.Add(pic);  
}
}
186  
- Sự kiện Click của Form1:  
private void Form1_Click(object sender, EventArgs e)  
{
try  
{
PictureBox pic = (PictureBox)sender;  
myPictureBox.Image = pic.Image;  
}catch (Exception ex) { }  
}
6.4. Điều khiển TableLayoutPanel  
Cũng như điều khiển FlowLayoutPanel, TableLayoutPanel là điều khiển dẫn  
xuất từ điều khiển Panel và được dùng cho mục đích thiết kế giao diện form.  
TableLayoutPanel nằm trong nhóm Containers của cửa sổ Toolbox như hình 6.13.  
Hình 6.13: Điều khiển TableLayoutPanel trong cửa sổ Toolbox  
TableLayoutPanel bao gồm các ô theo dòng và cột để thêm điều khiển vào. Lập  
trình viên có thể thêm các dòng và các cột cho TableLayoutPanel qua các thuộc tính  
Columns và Rows trong cửa sổ Properties như hình 6.14, hoặc thêm dòng và cột qua  
ContextMenuStrip khi nhấp chuột phải vào TableLayoutPanel như hình 6.15.  
187  
Hình 6.14: Thêm dòng và cột trên cửa sổ Column and Rown Styles  
Hình 6.15: Thêm dòng hoặc cột trên ContextMenuStrip  
Trên cửa sổ Column and Rown Styles như hình 6.14, các dòng và cột thêm vào  
có thể xác định kích thước bằng pixel (mục chọn Absolute), phần trăm (mục chọn  
Percent) hoặc tự động điều chỉnh kích thước (mục chọn AutoSize).  
188  
Với mỗi ô của TableLayoutPanel, chỉ có thể chứa được một điều khiển. Tuy  
nhiên lập trình viên có thể thêm nhiều điều khiển trong một ô bằng cách thêm một điều  
khiển loại Containers như: GroupBox, Panel, … vào ô của TableLayoutPanel, khi đó  
lập trình viên có thể thêm nhiều điều khiển vào điều khiển loại Containers nằm trong ô  
của TableLayoutPanel.  
TableLayoutPanel cũng được cung cấp thanh trượt (ScrollBar) khi thuộc tính  
AutoScroll là True.  
TableLayoutPanel là điều khiển dạng bảng chia thành các ô (cell) do đó không  
có thuộc tính BorderStyle mà thay vào đó có thuộc tính CellBorderStyle. Thuộc tính  
CellBorderStyle chỉ định kiểu đường viền cho TableLayoutPanel. Thông thường,  
thuộc tính TableLayoutStyle có giá trị mặc định là None, nghĩa là không hiển thị  
đường viền quanh các ô của TableLayoutPanel. Lập trình có thể thiết lập các loại  
đường viền được hổ trợ cho thuộc tính CellBorderStyle như: Single, Inset,  
InsetDouble, Outset, OutsetDouble, hoặc OutsetPartial.  
Một số thuộc tính thường dùng của TableLayoutStyle:  
Bảng 6.5: Bảng mô tả các thuộc tính của TableLayoutStyle  
Thuộc tính  
Mô tả  
AutoScroll  
Mang giá trị True hoặc False.  
- Nếu là True: TableLayoutStyle tự động  
xuất hiện thanh trượt khi kích thước  
Panel không thể hiển thị hết các điều  
khiển chứa bên trong  
- Nếu là False: TableLayoutStyle sẽ không  
hiển thị thanh trượt  
CellBorderStyle  
ColumnCount  
Kiểu đường viền của TableLayoutStyle khi hiển  
thị. Có 3 giá trị: None, Single và Inset,  
InsetDouble,  
Outset,  
OutsetDouble,  
OutsetPartial.  
Số cột của TableLayoutPanel. Lập trình viên có  
thể thêm hoặc giảm số cột bằng cách thay đổi  
giá trị thuộc tính ColumnCount  
Columns  
Thuộc tính này giúp hiển thị bảng Column and  
Rown Styles để thêm, sửa hoặc xóa cột.  
Thuộc tính chỉ định việc thay đổi kích thước  
của TableLayoutPanel như thế nào. Gồm các  
giá trị:  
GrowStyle  
- FixedSize: Cố định kích thước, không  
189  
thay đổi.  
- AddRows: Thêm dòng mới  
- AddColumns: Thêm cột mới  
RowCount  
Rows  
Số cột của TableLayoutPanel. Lập trình viên có  
thể thêm hoặc giảm số dòng bằng cách thay đổi  
giá trị thuộc tính RowCount  
Thuộc tính này giúp hiển thị bảng Column and  
Rown Styles để thêm, sửa hoặc xóa dòng.  
Phương thức thường dùng của TableLayoutStyle:  
Bảng 6.6: Bảng mô tả các phương thức của TableLayoutStyle  
Phƣơng thức  
Mô tả  
Controls.Add  
Phương thức có chức năng thêm điều khiển vào  
TableLayoutStyle  
6.5. Điều khiển TabControl  
TabControl là điều khiển dạng Containers, do đó có thể chứa các diều khiển  
khác. Điểm đặc biệt của TabControl là cho phép thể hiện nhiều page trên một form  
duy nhất. Mỗi page có thể chứa nhiều điều khiển khác bên trong. Điều khiển  
TabControl nằm trong nhóm Containers của cửa sổ Toolbox như hình 6.16.  
Hình 6.16: Điều khiển TabControl trong cửa sổ Toolbox  
TabPage:  
Thuộc tính quan trọng nhất của TabControl là TabPage. Một TabControl có thể  
có nhiều TabPage như hình 6.17. Người dùng có thể nhấp vào các tab để chuyển đổi  
qua lại giữa các TabPage với nhau  
190  
TabControl  
TabPage  
Hình 6.17: TabControl chứa nhiều TabPage  
TabPage là điều khiển dạng Container nằm trong TabControl và có thể chứa các  
điều khiển khác bên trong. Mỗi TabPage có các thuộc tính riêng, lập trình viên có thể  
thiết lập giá trị thuộc tính khác nhau trên mỗi TabPage của TabControl bằng cách  
nhấp chuột trái chọn thuộc tính TabPages trên cửa sổ Properties. Khi đó một cửa sổ  
TabPage Collection Editor sẽ hiển thị như hình 6.18. Tại cửa sổ này, lập trình viên  
cũng có thể thêm hoặc xóa các TabPage bằng cách nhấn nút Add hoặc Remove.  
Các thuộc  
tính của  
TabPage  
Hình 6.18: Cửa sổ thiết lập giá trị thuộc tính cho TabPage  
Điều khiển TabPage có nhiều điểm giống với điều khiển Panel. TabPage cũng  
hỗ trợ thanh trượt khi cần nếu như thuộc tính AutoScroll được thiết lập là True, có  
thuộc tính BorderStyle để thiết lập đường viền quanh TabPage với 3 giá trị: None,  
FixedSingle, Fixed3D. Tuy nhiên có điềm khác biệt với Panel là TabPage hỗ trợ thuộc  
191  
tính Text, chuỗi mô tả được thiết lập trong thuộc tính Text sẽ hiển thị trên tab của  
TabPage:  
Text của  
Text của  
Text của  
TabPage1 là  
MyTab1  
TabPage2 là  
MyTab2  
TabPage3 là  
MyTab3  
Các thuộc tính thường dùng của TabControl:  
Bảng 6.7: Bảng mô tả các thuộc tính của TabControl  
Mô tả  
Thuộc tính  
Appearance  
Thuộc tính chỉ định TabPage sẽ hiển thị ở hình  
dạng nào. Có 3 giá trị:  
- Normal:  
- Button:  
- FlatButtons:  
Alignment  
Thuộc tính xác định các tab sẽ hiển thị ở trên,  
dưới, trái hay phải của TabControl. Gồm các giá  
trị:  
- Top:  
192  
- Bottom:  
- Left:  
- Right:  
Multiline  
Mang hai giá trị True hoặc False.  
- Nếu là True: Cho phép hiển thị nhiều dòng  
để chứa các tab nếu số lượng các tab vượt  
ngoài phạm vi kích thước của TabControl.  
- Nếu là False: Chỉ cho phép tab hiển thị  
trên một dòng.  
193  
TabPages  
Chứa tập các các TabPage có trong TabControl  
Trả về số lượng TabPage mà TabControl có  
Trả về điều khiển TabPage được chọn  
Trả về vị trí của TabPage được chọn  
TabCount  
SelectedTab  
SelectedIndex  
Các sự kiện thường dùng của TabControl:  
Bảng 6.8: Bảng mô tả các sự kiện của TabControl  
Sự kiện  
SelectedIndexChanged  
Mô tả  
Phát sinh khi người dùng chọn một TabPage  
khác trên TabControl  
Ví dụ 6.3: Viết chương trình quản lý nhân sự như hình 6.19 và 6.20. Chương trình  
gồm 2 TagPage: TagPage Quản lý nhân viên và TagPage Quản lý giáo viên.  
TagPage quản lý nhân viên: Cho phép thêm, sửa và xóa nhân viên. Thông tinh  
nhân viên cần quản lý bao gồm: Họ tên nhân viên, chức vụ của nhân viên, hệ số  
lương và lương cơ bản.  
TagPage Quản lý giáo viên: Cho phép thêm sửa xóa giáo viên. Thông tin giáo  
viên cần quản lý gồm: Họ tên giáo viên, chức vụ của giáo viên, tiền giảng một  
tiết, số tiết dạy và học vị của giáo viên.  
Hình 6.19: Giao diện TabPage Quản lý nhân viên  
194  
Hình 6.20: Giao diện TagPage Quản lý giáo viên  
Hướng dẫn:  
Tạo TagPage Quản lý nhân viên:  
Bước 1: Thiết kế giao diện ban đầu. Thêm các điều khiển Label, TextBox,  
TabControl và ListView vào form như hình 6.21.  
tabControl1  
textBox3  
textBox3  
textBox1  
textBox2  
listView  
Hình 6.21: Giao diện TabPage Quản lý nhân viên sau khi thêm điều khiển  
Bước 2: Thiết lập giá trị thuộc tính cho điều khiển trong cửa sổ Properties  
- Form1:  
195  
Tải về để xem bản đầy đủ
pdf 129 trang yennguyen 22842 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình Windows Forms với C#.NET (Phần 2)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_lap_trinh_windows_forms_voi_c_net_phan_2.pdf