Bài 2 5Chương trình ví dụ Viết mã lệnh: DoubleClick vào RadioButton RadioPC, mã lệnh: 23:36:25 Private Sub RadioPC_CheckedChangedsender As Object, e As EventArgs Handles RadioPC.CheckedC
Trang 11 Chương trình ví dụ: Label, RadioButton, Listbox,
Checkbox
2 ComboBox
3 DateTimePicker, Textbox
4 LinkLabel
BÀI 2: CÁC ĐIỀU KHIỂN CƠ BẢN
1 Bài 2
16:08:28
Chương trình ví dụ
16:18:52
Label
Listbox
3 Radiobutton
3 Checkbox
Groupbox
Combobox
1
Trang 2Bài 2 3
Đối tượng Thuộc tính Giá trị
2 GroupBox
Thuộc tính các đối tượng
Đối tượng Thuộc tính Giá trị
(chọn 1)
SizeMode StretchImage
16:15:45
Thêm các Items cho Listbox:
Click vào nút Browse bên phải
Chọn thuộc tính Items của Listbox lstKhac
Nhập các Items:
Thực hiện tương tự cho Combobox Combobox1
3
4
Trang 3Bài 2 5
Chương trình ví dụ
Viết mã lệnh:
DoubleClick vào RadioButton RadioPC, mã lệnh:
23:36:25
Private Sub RadioPC_CheckedChanged(sender As Object, e As EventArgs)
Handles RadioPC.CheckedChanged
If RadioPC.Checked Then
PictureBox1.Image = System.Drawing.Image.FromFile _
("E:\Visual Studio 2015\Projects\Use controls\UseControls\UseControls\pc.png")
PictureBox1.Visible = True
End If
End Sub
Dấu ‘_’ sauSystem.Drawing.Image.FromFile là dấu xuống dòng khi dòng mã quá dài.
Đường dẫn ảnh thực hiện bằng cách copy một bức ảnh bất kỳ vào thư mục chứa dự án và kéo
trực tiếp từ cửa sổ Solution Explorer vào trong đoạn mã.
Chương trình ví dụ
Lấy đường dẫn ảnh:
10:31:36
Click vào nút Show All Files trên cửa sổ Solutions Explorer
Click vào file ảnh vào kéo vào cửa sổ mã lệnh
Thực hiện tương tự cho 2 Radiobutton RadioMac và RadioLaptop
5
Trang 4Bài 2 7
Chương trình ví dụ
Viết mã lệnh:
DoubleClick vào Checkbox chkXedap, mã lệnh:
23:36:25
Private Sub chkXedap_CheckedChanged(sender As Object, e As EventArgs)
Handles chkXedap.CheckedChanged
If chkXedap.Checked Then
PictureBox2.Image = System.Drawing.Image.FromFile _
( "E:\Visual Studio 2015\Projects\Use controls\UseControls\UseControls\bike.png" )
PictureBox2.Visible = True
Else
PictureBox2.Visible = False
End If
End Sub
Thực hiện tương tự cho 2 Checkbox chkXehoi và chkXemay tương ứng với
PictureBox3 và PictureBox4.
Chương trình ví dụ
Viết mã lệnh:
23:36:25
Private Sub lstKhac_SelectedIndexChanged(sender As Object, e As
EventArgs) Handles lstKhac.SelectedIndexChanged
Select Case lstKhac.SelectedIndex
Case 0
PictureBox5.Image = System.Drawing.Image.FromFile _
( "E:\Visual Studio 2015\Projects\Use controls\UseControls\UseControls\photocopy.png" )
PictureBox5.Visible = True
Case 1
PictureBox5.Image = System.Drawing.Image.FromFile _
( "E:\Visual Studio 2015\Projects\Use controls\UseControls\UseControls\cellphone.png" )
PictureBox5.Visible = True
Case 2
PictureBox5.Image = System.Drawing.Image.FromFile _
("E:\Visual Studio 2015\Projects\Use controls\UseControls\UseControls\calc.png")
PictureBox5.Visible = True
End Select
End Sub
DoubleClick vào Listkbox lstKhac, mã lệnh:
7
8
Trang 5Bài 2 9
Chương trình ví dụ
Viết mã lệnh:
23:36:25
Private Sub lstKhac_SelectedIndexChanged(sender As Object, e As
EventArgs) Handles lstKhac.SelectedIndexChanged
Select Case lstKhac.SelectedIndex
SelectedIndexChanged: sự kiện xảy ra khi Items được
chọn trên Listbox thay đổi
SelectedIndex: số thứ tự của Items đang chọn
23:36:25 Select Case BiểuThức
CaseDanhSáchGiáTrị
CácCâuLệnh [Case Else
CácCâuLệnh]
End Select
q Hoạt động:BiểuThứcsẽ được tính toán và kết quả nếu khớp với các hằng
hoặc các biểu thức trongDanhSáchGiáTrịcủa câu lệnh Case thìCácCâuLệnh
sau nó được thực hiện Nếu không khớp với bất kỳ DanhSáchGiáTrị thì
CácCâuLệnhsau Case Else sẽ thực hiện
9
Trang 6Bài 2 11
Select Case WeekNumber
Case 1
MessageBox.Show("Monday")
Case 2
MessageBox.Show("Tuesday")
Case 3
MessageBox.Show("Wednesday")
Case 4
MessageBox.Show("Thursday")
Case 5
MessageBox.Show("Friday")
Case 6
MessageBox.Show("Saturday")
Case 7
MessageBox.Show("Sunday")
Case Else
MessageBox.Show("Number not in the range…")
End Select
Select Case QtyOrdered Case 1 To 10, 21, 23 CreditPoints = 10 Case 11 To 20 CreditPoints = 15 Case Is > 23 CreditPoints = 25 Case Else MessageBox.Show(“Không hợp lệ") End Select
08:05:02
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As
EventArgs) Handles ComboBox1.SelectedIndexChanged
Select Case ComboBox1.SelectedIndex
Case 0
PictureBox6.Image = System.Drawing.Image.FromFile _
( "E:\Visual Studio 2015\Projects\Use controls\UseControls\UseControls\dollar.png" )
PictureBox6.Visible = True
Case 1
PictureBox6.Image = System.Drawing.Image.FromFile _
( "E:\Visual Studio 2015\Projects\Use controls\UseControls\UseControls\pound.jpg" )
PictureBox6.Visible = True
Case 2
PictureBox6.Image = System.Drawing.Image.FromFile _
( "E:\Visual Studio 2015\Projects\Use controls\UseControls\UseControls\vnd.png" )
PictureBox6.Visible = True
End Select
DoubleClick vào Combobox ComboBox1, mã lệnh:
DoubleClick vào button bttExit, mã lệnh:
Private Sub bttExit_Click(sender As Object, e As EventArgs) Handles
bttExit.Click
End
End Sub
11
12
Trang 7Bài 2 13
Thêm các Items vào Listbox và ComboBox trong lúc thực thi:
lstKhac.Items.Add(“Photocopy")
lstKhac.Items.Add(“Điện thoại di động")
lstKhac.Items.Add(“Máy tính bỏ túi")
ComboBox1.Items.Add("USD")
ComboBox1.Items.Add("Bảng Anh")
ComboBox1.Items.Add(“Việt Nam đồng")
23:36:25
Xử lý khi người dùng gõ giá trị chưa có trong ComboBox
Picture6 không thay đổi Hiện chuỗi dữ liệu do người dùng nhập trên ComboBox lên Picture6
13
Trang 8Bài 2 15
23:36:25
Mở rộng chương trình ví dụ
Private Sub ComboBox1_TextChanged(sender As Object, e As EventArgs)
Handles ComboBox1.TextChanged
PictureBox6.Image = Nothing
PictureBox6.Visible = True
End Sub
TextChanged: sự kiện xảy ra khi gõ ký tự trên ComboBox
PictureBox6.Image = Nothing : xóa ảnh trên PictureBox6
Hiện dữ liệu người dùng nhập trên ComboBox lên PictureBox
Dùng sự kiện Paint để vẽ lại PictureBox
Private Sub PictureBox6_Paint(sender As Object, e As
PaintEventArgs) Handles PictureBox6.Paint
e.Graphics.DrawString(ComboBox1.Text, New Font("Verdana",
12, FontStyle.Bold), New SolidBrush(Color.Red), 0, 0)
End Sub
Dùng DrawString của lớp Graphics để đưa một String lên PictureBox:
- Font Verdana, kích thước 12, in đậm
- Màu: Red
- Tọa độ in chuỗi: x = 0, y = 0
15
16
Trang 9Bài 2 17
13:10:50
Chỉ dùng sự kiện Paint khi
người dùng nhập chuỗi không
có trong danh sách
Dùng thêm biến NoPaint
13:29:57 Public Class Form1
Dim NoPaint As Boolean
Private Sub ComboBox1_SelectedIndexChanged(sender As Object,
e As EventArgs) Handles ComboBox1.SelectedIndexChanged
NoPaint = True
Select Case ComboBox1.SelectedIndex
Private Sub ComboBox1_TextChanged(sender As Object, e As
EventArgs) Handles ComboBox1.TextChanged
NoPaint = False
PictureBox6.Image = Nothing
PictureBox6.Visible = True
End Sub
Private Sub PictureBox6_Paint(sender As Object, e As
PaintEventArgs) Handles PictureBox6.Paint
If Not NoPaint Then
e.Graphics.DrawString(ComboBox1.Text, New Font("Verdana",
12, FontStyle.Bold), New SolidBrush(Color.Red), 0, 0)
End If
End Sub
17
Trang 10Bài 2 19
23:36:25
Xuống hàng sau mỗi khoảng trắng
23:36:25 Private Sub PictureBox6_Paint(sender As Object, e As PaintEventArgs)
Handles PictureBox6.Paint
Dim ypos As Integer = 0
Dim str As String = ComboBox1.Text
Dim strarr() As String = str.Split(" ")
If Not NoPaint Then
For Each s As String In strarr
e.Graphics.DrawString(s, New Font("Verdana", 12,
FontStyle.Bold), New SolidBrush(Color.Red), 0, ypos)
ypos = ypos + 13
Next
End If
End Sub
19
20
Trang 11Bài 2 21
Dùng ImageList
13:17:03
13:21:12
Private Sub lstKhac_SelectedIndexChanged(sender As Object, e As
EventArgs) Handles lstKhac.SelectedIndexChanged
Select Case lstKhac.SelectedIndex
Case 0
PictureBox5.Image = imglistClipArt.Images(6)
PictureBox5.Visible = True
Case 1
PictureBox5.Image = imglistClipArt.Images(7)
PictureBox5.Visible = True
Case 2
PictureBox5.Image = imglistClipArt.Images(8)
PictureBox5.Visible = True
End Select
End Sub
Mã lệnh cho Listbox lstKhac:
Sửa lại mã lệnh của các đối tượng khác
21
Trang 12Bài 2 23
Mở rộng chương trình: DateTimePicker
Bổ sung thêm các đối tượng cho chương trình:
23:36:25
DateTimePicker
datepickerNgaygiao
Label
Label
Label
DoubleClick vào DateTimePicker datepickerNgaygiao, mã lệnh:
Private Sub datepickerGiaohang_ValueChanged(sender As Object, e As
EventArgs) Handles datepickerGiaohang.ValueChanged
txtNgaydat.Text = Now
txtNgaygiao.Text datepickerGiaohang.Value
End Sub
13:21:12
23
24
Trang 13Bài 2 25
Private Sub datepickerGiaohang_ValueChanged(sender As Object, e As
EventArgs) Handles datepickerGiaohang.ValueChanged
txtNgaydat.Text = Format(Now, "ddd dd/MM/yyyy")
txtNgaygiao.Text = Format(datepickerGiaohang.Value, "ddd dd/MM/yyyy")
End Sub
Một số định dạng thời gian:
Ký hiệu Ví dụ
“Long Date” Friday Oct 4, 2019
“Short Date” 10/4/2019
“Long Time” 3:26:11 PM
“Short Time” 3:26 PM
“dddd” Ngày, vd: Friday
13:21:12
25
Trang 14Bài 2 27
Mở rộng chương trình: LinkLabel
13:21:12
Private Sub frmBanhang_Load(sender As Object, e As EventArgs)
Handles Me.Load
LinkLabel1.Text = "Click ở đây hay về trang chủ"
LinkLabel1.LinkArea = New LinkArea(6, 5)
LinkLabel1.Links.Add(19, 9)
LinkLabel1.Links(0).LinkData = "google.com.vn"
LinkLabel1.Links(1).LinkData = "microsoft.com"
End Sub
Click ở đây hay về trang chủ
LinkLabel1.LinkArea = New LinkArea(6, 5)
Start: 6, Length: 5
LinkLabel1.Links.Add(19, 9) Start: 19, Length: 9
Private Sub LinkLabel1_LinkClicked(sender As Object, e As
LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
If Not IsNothing(e.Link.LinkData) Then
System.Diagnostics.Process.Start(e.Link.LinkData.ToString())
End If
End Sub
27
28
Trang 15Bài 2 29
Mở rộng chương trình: LinkLabel,
StatusBar
13:21:12
Public Class frmBanhang
Dim NoPaint As Boolean
Dim mainStatusBar As New StatusBar()
Dim statusPanel As New StatusBarPanel()
Dim datetimePanel As New StatusBarPanel()
Private Sub frmBanhang_Load(sender As Object, e As EventArgs) Handles
Me.Load
LinkLabel1.Text = "Click ở đây hay về trang chủ"
LinkLabel1.LinkArea = New LinkArea(6, 5)
LinkLabel1.Links.Add(19, 9)
LinkLabel1.Links(0).LinkData = "google.com.vn"
LinkLabel1.Links(1).LinkData = "microsoft.com"
CreateDynamicStatusBar()
End Sub
Mở rộng chương trình: LinkLabel,
StatusBar
13:21:12
Private Sub CreateDynamicStatusBar()
statusPanel.BorderStyle = StatusBarPanelBorderStyle.Sunken
statusPanel.Text = ""
statusPanel.AutoSize = StatusBarPanelAutoSize.Spring
mainStatusBar.Panels.Add(statusPanel)
datetimePanel.BorderStyle = StatusBarPanelBorderStyle.Raised
datetimePanel.Text = Now.ToLongDateString()
datetimePanel.AutoSize = StatusBarPanelAutoSize.Contents
mainStatusBar.Panels.Add(datetimePanel)
mainStatusBar.ShowPanels = True
Controls.Add(mainStatusBar)
End Sub
29
Trang 16Bài 2 31
Mở rộng chương trình: LinkLabel,
StatusBar
13:21:12
statusPanel.BorderStyle = StatusBarPanelBorderStyle.Sunken
Đường biên của status panel:
- None: không
- Sunken: 3D chìm
- Raised: 3D nổi statusPanel.AutoSize = StatusBarPanelAutoSize.Spring
Điều chỉnh kích thước của status panel:
- None: không
- Contens: tự chỉnh theo nội dung
- Spring: chia đều cho các phần tử có thuộc tính Spring
Private Sub LinkLabel1_MouseLeave(sender As Object, e As EventArgs)
Handles LinkLabel1.MouseLeave
statusPanel.Text = ""
End Sub
Private Sub LinkLabel1_MouseMove(sender As Object, e As
MouseEventArgs) Handles LinkLabel1.MouseMove
Dim pos As Integer = MousePosition.X - LinkLabel1.Left - Me.Left
If (pos > 39) And (pos < 65) Then
statusPanel.Text = LinkLabel1.Links(0).LinkData
ElseIf (pos > 114) And (pos < 168) Then
statusPanel.Text = LinkLabel1.Links(1).LinkData
Else
statusPanel.Text = ""
End If
Mở rộng chương trình: LinkLabel,
StatusBar
13:21:12
31
32
Trang 17Bài 2 33
13:21:12
33