Một số thuộc tính thường dùng- True: Cho phép cửa sổ Tooltip được xuất hiện - False: Không cho phép BackColor Chọn mầu nền cho cửa sổ Tooltip chính là khung hình chữ nhật hiện ra Automat
Trang 12 Một số thuộc tính thường dùng
- True: Cho phép cửa sổ Tooltip được xuất hiện
- False: Không cho phép BackColor Chọn mầu nền cho cửa sổ Tooltip (chính là khung hình chữ nhật hiện ra) AutomaticDelay Thời gian tính bằng phần ngàn giây áp dụng cho 3 thuộc tính ở dưới đây:
AutoPopDelay, InitiaDelay, ReshowDelay
AutoPopDelay Khoảng thời gian mà cửa sổ điều khiển tooltip xuất hiện kể từ lúc người
dùng di chuyển chuột vào điều khiển cho đến khi kết thúc (1000=1s) (Nói
gắn gọn: Khoảng thời gian mà nó sẽ được xuất hiện khi người dùng di chuyển chuột vào điều khiển)
InitialDelay Khoảng thời gian mà cửa sổ điều khiển tooltip sẽ chờ để được xuất hiện
kể từ khi người dùng di chuyển chuột vào điều khiển (Ví dụ đặt thuộc tính
là 1000 thì sau khi di chuyển chuyển vào điều khiển 1s thì cửa sổ tooltip sẽ xuất hiện)
ReshowDelay Khoảng hời gian mà cửa sổ sẽ tắt kể từ khi người dùng di chuyển chuột ra
ngoài điều khiển
- True: Cửa sổ hình chữ nhật bật nên với các góc bo tròn
- False: Cửa sổ hiện nên có hình chữ nhật
TooltipTitle Chuỗi xuất hiện bên cạnh Icon ở trên(Không phải là Tooltip)
3 Sử dụng điều khiển Tooltip
Khi kéo một điều khiển Tooltip vào Form thì mặc định tên của nó là: toolTip1 Khi đó
các điều khiển trên Form (Textbox, Button hay Label… ) tự động có thêm một thuộc tính
nữa là: Tooltip on Tooltip1 (Với Tooltip1 là tên của điều khiển vừa đưa vào - Thuộc tính
mới này nằm trong hộp thoại Properties).Bạn chỉ cần đặt giá trị cho thuộc tính này (thuộc
tính Tooltip on Tooltip1 của các điều khiển như Textbox, Button…chứ không phải của
tooltip) là một chuỗi gợi nhắc nào đó Lúc chạy chương trình khi trỏ chuột vào điều khiển
đó hiện nên thông báo (Chuỗi vừa nhập ở thuộc tính Tooltip on Tooltip1)
Trang 22 Một số thuộc tính thường dùng
BlinkStyle Chọn kiểu hiển thị cho điều khiển ErrorProvider Nhận 1 trong 3 giá trị:
- Khi có lỗi mới nhấp nháy (BlinkIfDifferentError - mặc định).
- Nhấp nháy liên tục (AlwaysBlink),
- Không bao giờ nhấp nháy (NeverBlink).
Icon Icon xuất hiện bên cạnh điều khiển, có thể chọn Icon bất kì trên máy tính
của bạn chứ không nhất thiết là Icon mặc định của VS (hình tròn đỏ)
3 Một số phương thức thường sử dụng
SetError Khai báo chuỗi xuất hiện tương tự như thuộc tính Error on errorProvider1.
GetError Nhận chuỗi từ thuộc tính Error on errorProvider1 của điều khiển.
4 Sử dụng điều khiển ErrorProvider
Khi kéo một điều khiển ErrorProvider vào Form thì mặc định tên của nó là:
errorProvider1 Khi đó các điều khiển trên Form (Textbox, Button hay
Label… ) tự động có thêm một thuộc tính nữa là: Error on errorProvider1 (Với errorProvider1 là tên của điều khiển Error Provider vừa đưa vào - Thuộc
tính mới này nằm trong hộp thoại Properties). Bạn chỉ cần đặt giá trị cho
thuộc tính này là một chuỗi nào đó (thuộc tính Error on errorProvider1 của
các điều khiển như Textbox, Button…chứ không phải của điều khiển ErrorProvider) Lúc chạy chương trình thì có một biểu tượng hình tròn đỏ bên
cạnh điều khiển mà bạn đặt thuộc tính Error on errorProvider1, khi trỏ vào đó
sẽ xuất hiện dòng thông báo trên).
Ví dụ: Chúng ta có một form: frmErrorProvider Trên form có 2 điều khiển
Textbox có tên là: txtUser, txtPass và một button có tên btLogin Khia nhấn vào nút btLogin nếu giá trị của 2 ô txtUser và txtPass để trống (“”) thì xuất
hiện điều điều khiển ErrorProvider bên cạnh các điều khiển này
Trang 3privatevoid btLogin_Click(object sender, EventArgs e)
{
//Chúng ta có thể kéo một điều khiển ErrorProvider vào form và đặt các thuộc tính
//Cho các điều khiển txtUser, txtPass và điều khiển ErrorProvider bạn vừa tạo ra
//Ở đây khai báo đối tượng ErrorProvider bằng code
//Khai báo đối tượng thuộc kiểu ErrorProvider
ErrorProvider ep = newErrorProvider();
//Đặt các thuộc tính
ep.Clear();
ep.BlinkRate = 300;
ep.BlinkStyle = ErrorBlinkStyle.BlinkIfDifferentError;
//Đặt cho một một điều khiển (Textbox) sử dụng phương thức SetError
Trang 4- Blocks: Tô từng khối (các khối có cách nhau) màu xanh từ trái qua phải
- Continuous: Tô màu xanh (liền nhau) từ trái qua phải
- Marquee: Cuộn màu xanh chạy từ trái qua phải
3. Ví dụ đơn giản về ProgressBar
Giả sử chúng ta có form: frmProgresBar Trên form có một điều khiển ProgressBar có tên progressBar1, một điều khiển timer có tên timer1 và một label có tên là label1 Chúng ta minh họa sử dụng ProgressBar qua ví dụ đơn
//Sự kiện Tick của Timer
privatevoid timer1_Tick(object sender, EventArgs e)
Trang 5CheckBoxes Nhận một trong hai giá trị True hay False (mặc định là False)
- True: Hiển thị một checkbox bên cạnh phần tử đầu tiên của mỗi hàng (1
hàng = 1 ListviewItem) trong Listview
- False: Ngược lại
Columns Tập các cột trong ListView là một Collection Thông qua thuộc tính này có thể
thêm các cột vào Listview (Có thể thêm các cột vào Listview thông qua giao
diện đồ họa hay có thể viết Code Chú ý: Phải đặt thuộc tính View là Detail thì
bạn mới có thể nhìn thấy các cột này) ContextMenuStrip Gắn một menu ngữ cảnh với điều khiển ListView (khi nhấn chuột phải vào
Listview thì sẽ hiển thị menu này) FullRowSelect Nhận một trong hai giá trị True hay False
- True: Cho phép chọn (bôi đen) cả hàng (của phần tử đang được chọn Chú ý: Thuộc tính View = Detail)
- False: Ngược lại GridLines Nhận một trong hai giá trị True hay False
- True: Hiển thị lưới bao quanh và ngăn cách các hàng (Chỉ có hiệu lực nếu thuộc tính View = Detail)
- False: Ngược lại
Group Khai báo nhóm để phân loại các phần tử sau khi trình bày trên điều khiển
Listview HeaderStyle Đây là thuộc tính cho phép chọn Style cho Listview trong chế độ View là
Report
Items Là một Collection Cho phép tạo ra các giá trị cho các hàng, cột trong Listview
(tất nhiên có thể dùng giao diện đồ họa hay viết Code)
LabelEdit Nhận một trong hai giá trị True hay False
- True: Cho phép thay đổi (sửa) Text của các phần tử (các Ô).
- False: Ngược lại LabelWap Nhận một trong hai giá trị True hay False
- True: Chuỗi §HSPKTHYẽ tự động xuống hàng khi chiều dài không đủ để trình bày
- False: Ngược lại MultiSelect Nhận một trong hai giá trị True hay False
- True: Cho phép chọn nhiều hàng (ListviewItem) Mặc định là True
- False: Không cho phép chọn nhiều hàng LargeImageList Đối tượng ImageList chứa danh sách các Image theo chỉ số (Index) từ 0 đến n-
1 Được sử dụng nếu thuộc tính View là LargeIcon
SmallImageList Đối tượng ImageList chứa danh sách các Image theo chỉ số (index) từ 0 đến
n-1 Được sử dụng nếu thuộc tính View là SmallIcon
Scrollable Nhận một trong hai giá trị True hay False
- True: Cho phép xuất hiện thanh trượt trong Listview (Khi số ListViewItem nhiều và vượt qua chiều cao của ListView)
- False: Ngược lại Sorting Sắp xếp giá trị các hàng (ListViewItem) trong ListView (Chỉ có hiệu lực nếu
thuộc tính View là Detail) Thuộc tính này nhận một trong các giá trị sau
Trang 6CheckedItems Trả về danh sách các phần tử được check (tất nhiên thuộc tính CheckBoxes =
………
4. Một số sự kiện thường dùng
SelectedIndexChanged Xảy ra khi người sử dụng thay đổi phần tử được chọn trong ListView
ItemChecked Khi Check vào biểu tượng Checkbox của mỗi phần tử trên điều khiển
ListView
5. Một số khái niệm liên quan đến ListView
Trang 7Hình 1: Minh họa về ListView
Hình 2: Cột trong ListView
Trang 8Hình 3: Khái niệm ColumnHeader
Hình 4: Khái niệm ListViewItem
Trang 9Hình 5: Khái niệm SubItems
Hình 6: Minh họa về Group
6. Minh họa ListView
Trang 10Giả sử chúng ta có một điều khiển ListView có tên là LV (thuộc tính Name=LV), và có thuộc tính View=Detail.
Chúng ta minh họa ListView qua một số bước sau:
Bước 1: ListView khi chưa làm gì.
Bước 2: Thêm một cột vào ListView
LV.Columns.Add( "Name" ,100, HorizontalAlignment Left);
//Hoặc 3 câu lệnh dưới đây
//ColumnHeader ch = new ColumnHeader("clName");
//ch.Text = "Name";
//LV.Columns.Add(ch);
Bước 3: Thêm cột thứ 2 vào ListView
LV.Columns.Add( "Size" ,100, HorizontalAlignment Left);
//Hoặc 3 câu lệnh dưới đây
//ColumnHeader ch = new ColumnHeader("clSize");
//ch.Text = "Size";
//LV.Columns.Add(ch);
Trang 11Bước 4: Tạo hàng mới và Add các giá trị vào hàng mới đó
ListViewItem lvi;
lvi= new ListViewItem ( "TK4.doc" );
lvi.SubItems.Add( "30Kb" );
LV.Items.Add(lvi);
////Hoặc sử dụng 3 câu lệnh sau
//string[] HangMoi = new string[] { "TK4.doc", "30Kb" };
//ListViewItem lvi = new ListViewItem(Them);
//LV.Items.Add(lvi);
Trang 137. Sử dụng điều khiển ListView qua một số Code
8. Giả sử chúng ta có một form có tên: frmListView Trên đó có chứa một số điều khiển sau:
• Điều khiển ListView có tên listView1 (Chúng ta để tất cả các thuộc tính của listView1 với giá trị mặc định)
• Button btCheck: minh họa việc duyệt các hàng được check trên ListView
• Buttonbt RemoveAtColumns: Minh họa xóa một cột trong ListView
• Buttonbt RemoveAtItems: Minh họa xóa một hàng trong ListView
• Buttonbt ShowFile: Minh họa hiển thị tất cả các file trong một thư mục nên ListView
• Button btGroup: Minh họa về Group trong ListView
9
10. Chúng ta sẽ minh họa sử dụng ListView qua sự kiện Click của các button trên
11
12. 7.1 Tạo các cột, hàng cho ListView bằng code
13. privatevoid frmListView_Load(object sender, EventArgs e)
14. {
15. //Đặt một số thuộc tính cho điều khiển ListView1 bằng code
16. //Bạn chỉ có thể nhìn thấy các cột nếu đặt thuộc tính View=Detail
17. listView1.View = View.Details;
18. listView1.GridLines = true;
19. listView1.CheckBoxes = true;//Hiển thị checkbox: các bạn xem kết quả ở hinhg minh họa.20
21. //Thêm 4 cột vào Listview
22. //Có thể thêm cột vào ListView theo cách này
23. listView1.Columns.Add("Họ và tên", 100, HorizontalAlignment.Center);
24. listView1.Columns.Add("Quê quán", 100, HorizontalAlignment.Center);
25. listView1.Columns.Add("Lớp", 100, HorizontalAlignment.Center);
26
27. //Cách 2: Có thể thêm vào theo cách này: Sử dụng ColumnHeader
Trang 1428. ColumnHeader ch = newColumnHeader("chNgaySinh");
29. ch.Text = "Ngày sinh";
30. ch.TextAlign = HorizontalAlignment.Center;
31. ch.Width = 100;
32. listView1.Columns.Add(ch);
33
34. //Thêm hàng thứ nhất vào ListView
35. string[] Them = newstring[] { "Nguyễn Văn Hải", "Hưng Yên", "TK4N1", "29-03-1987" };
36. ListViewItem lv = newListViewItem(Them);
37. listView1.Items.Add(lv);
38.
39. //Thêm hàng thứ 2
40. string[] Them2 = newstring[] { "Nguyễn Văn Hạnh", "Hà Nội", "TK4N1", "24-04-1987" };
41. ListViewItem lv2 = newListViewItem(Them2);
42. listView1.Items.Add(lv2);
43
44. //Thêm hàng thứ 3
45. string[] Them3 = newstring[] { "Phạm Thị Hạnh", "Hải Dương", "TK4N1", "04-10-1988"};
46. ListViewItem lv3 = newListViewItem(Them3);
47. listView1.Items.Add(lv3);
48
49. //Thêm hàng thứ 4
50. string[] Them4 = newstring[] { "Vũ Thị Hảo", "Bắc Ninh", "TK4N1", "25-12-1987" };
51. ListViewItem lv4 = newListViewItem(Them4);
52. listView1.Items.Add(lv4);
53. }
54. → Sau khi chạy có hình như sau:
55
Trang 1557
58
59 7.2 Duyệt xem những hàng nào được Check
60. private void btCheck_Click(object sender, EventArgs e)
61. {
62. //Bạn phải tạo ra một Listview như mục 7.1 trước đã
63. MessageBox.Show("Tên các sinh viên được Check là","Check",MessageBoxButtons.OK);64
65. //Duyệt các phần tử được Check thông qua thuộc tính CheckedItems
66 foreach (ListViewItem lvi in listView1.CheckedItems)
Trang 1675 7.3 Xóa một Cột tại vị trí nào đó
76. privatevoid btRemoveAtColumns_Click(object sender, EventArgs e)
Trang 1788 Hình 7.2: Columns ↔ Collection
89 7.4 Xóa một hàng tại một vị trí nào đó
90 → Hoàn toàn tương tự như xóa một cột
91. privatevoid btRemoveAtItems_Click(object sender, EventArgs e)
92. {
93. //Chú ý: Tập các Items trong Listview là một Collection nên có đầy đủ các phương thức của một Collection
94. //Ví dụ: Xóa một cột ở vị trí nào đó (tất nhiên bạn phải tạo ra một listview với các giá trị như mục 7.1) 95
Trang 18102 Hình 7.4: Items ↔ Collection
103 7.5 Duyệt tất cả các file trong một thư mục và hiển thị nên ListView
104. privatevoid btShowFile_Click(object sender, EventArgs e)
105. {
106. //Listview (listView1) này hiển thị tất cả các File trong C:\WINDOWS
107. //Bạn có thể dùng hộp thoại FolderBrowserDialog để duyệt file trong thư mục bất kì mà bạn chọn
108. //Phương thức Clear xóa toán bộ Listview
109. listView1.Clear();
110
111. //Chọn một số thuộc tính cho Listview thông qua mã lệnh
112. listView1.View = View.Details;
113. listView1.FullRowSelect = true;//Cho phép chọn cả hàng như hình kết quả dưới
114. listView1.GridLines = true;
115
116. //Add các cột vào Listview bằng mã lệnh
117. //Mỗi file có các đặc tính của file: Tên, kích thước, kiểu file (ReadOnly, System ) nên chúng ta tạo ra các cột tương ứng
118. listView1.Columns.Add("Number", 100, HorizontalAlignment.Left);
119. listView1.Columns.Add("Name", 300, HorizontalAlignment.Left);
120. listView1.Columns.Add("Size", 150, HorizontalAlignment.Left);
121. listView1.Columns.Add("Type", 100, HorizontalAlignment.Left);
122
123. //Nên khai báo đổi tượng DirectoryInfo để duyệt file
124. //DirectoryInfo là một lớp nằm trong System.IO
125. DirectoryInfo dir = newDirectoryInfo(@"C:\WINDOWS");
126
127. //Khai báo i để lấy về Số thứ tự file: 1, 2, 3
128. int i = 0;
129
Trang 19130. //Khai báo một ListviewItem - Một Hàng
139. //Gán các thành phần cho lvi qua thuộc tính SubItems.Add
140. lvi = newListViewItem(i.ToString());
Trang 20150.
151 Hình 7.5: Kết quả sau khi nhấn vào Button Show File
152 7.6 làm việc với Group trong ListView
153. private void btGroup_Click(object sender, EventArgs e)
154. {
155. //Ý tưởng: Chúng ta muốn đưa tất cả các file có cùng thuộc tính vào một nhóm
156. //làm việc với nhóm các bạn chú ý đối tượng ListViewGroup
157. //Xóa Listview trướcđã
Trang 21166. ListViewGroup gNormal;
167
168. //Add các cột vào Listview bằng mã lệnh
169. listView1.Columns.Add("Number", 100, HorizontalAlignment.Left);
170. listView1.Columns.Add("Name", 300, HorizontalAlignment.Left);
171. listView1.Columns.Add("Size", 150, HorizontalAlignment.Left);
172. listView1.Columns.Add("Type", 100, HorizontalAlignment.Left);173
174. //Add 3 nhóm - Group vào Listview
175. gArchive = newListViewGroup("Archive");
176. gSystem = newListViewGroup("System");
177. gNormal = newListViewGroup("Normal");
178. listView1.Groups.Add(gArchive);
179. listView1.Groups.Add(gSystem);
180. listView1.Groups.Add(gNormal);
181
182. //Listview này hiển thị tất cả các File trong C:\WINDOWS
183. //Nên khai báo đổi tượng DirectoryInfo
184. DirectoryInfo dir = newDirectoryInfo(@"C:\WINDOWS");
193. //Duyệt file và đưa vào Group các file cùng thuộc tính
194. foreach (FileInfo f in dir.GetFiles("*.*"))
195. {
Trang 22196. i++;
197. //Gán các thành phần cho lvi qua thuộc tính SubItems.Add
198. lvi = newListViewItem(i.ToString());
Trang 23220.
221 Hình 7.6: Group 222.
228 7.7 Lấy về giá trị của một ô (SubItems) bất kì nào đó trên ListView (sự kiện listView1_ItemActivate)
229 Giả sử chúng ta có hình như sau:
Trang 24236. ListViewItem lvi = listView1.FocusedItem;
237. MessageBox.Show(lvi.Text);//Lấy ra giá trị ô text đầu tiên
238
239. //Lấy về cột thứ 1 - Cột Quê quán (Cột trông ListView có chỉ số bắt đầu = 0)
240. string Cot1 = lvi.SubItems[1].Text;
241. MessageBox.Show("Giá trị cột thứ 1: " + Cot1);
242
243. //Lấy về cột thứ 2 - Cột Lớp
244. string Cot2 = lvi.SubItems[2].Text;
245. MessageBox.Show("Giá trị cột thứ 2: " + Cot2);
246. //Giờ thì bạn chạy và Click vào một hàng xem để xem kết quả
247. //Ứng dụng: Thường ứng dụng trong lập trình CSDL: Hiển hị tất cả các các thông tin (sinh viên chả hạn)
Trang 25248. //nên ListView khi người dùng chọn một hàng trên ListView thì hiển thị các giá trị tương ứng nên
249. //Các Textbox khi đó bạn có thể chỉnh sửa các thông tin và Update vào CSDL
Trang 26281.AutoSizeColumnsMode 282.Các kiểu lựa chọn với Cột (Đặt các chế độ khác nhau)
283.AutoSizeRowsMode 284.Các kiểu lựa chọn với Hàng (Đặt các chế độ khác nhau)
287.BorderStyle 288.Đặt kiểu đường viền ngoài bao quanh cho DataGridView
291.ColumnHeadersBorderStyle 292.
295.ColumnHeadersVisible 296.Nhận một trong hai giá trị True hay False
- True: Cho phép hiển thị tiêu đề các cột
- False: Không cho phép hiển thị tiêu để các cột
297.Columns 298.Làm việc với cột (Đặt tiêu đề cho Headers, lựa chọn kiểu cột
(Checkbox, Button, Image…) → Trong DataGridView một cột
có thể là: Cột các Button, Cột các Checkbox…
299.DataMember 300.Chọn cơ sở dữ liệu để hiển thị nên DataGridView
301.DataSource 302.Chọn nguồn dữ liệu cho DataGridView (hai thuộc tính
DataSource và DataMember hay đi với nhau) 303.GridColor 304.Chọn màu cho lưới (các hàng, các cột được ngăn cách nhau bởi
lưới)
307.ReadOnly 308.Nhận một trong hai giá trị True hay False
- True: Cho phép thay đổi giá trị các các phần tử (các ô hay các Cell).
- False: không cho phép thay đổi giá trị các phần tử
309.RowHeadersBorderStyle 310.Chọn kiểu viền cho các Hàng (Rows).
311.RowHeaderVisible 312.Nhận một trong hai giá trị True hay False
- True: Cho phép hiển thị Headers của hàng(Cột đầu tiên ở mép ngoài bên trái)
- False: Ngược lại
322.CellClick 323.Xảy ra khi người dùng nhấn chọn một ô bất kì nào đó trên
DataGridView (tất nhiên DataGridView phải có dữ liệu)
324.Chú ý: Trong DataGridView thì khái niệm Ô ≡ Cell
325.………
Trang 27334.
335 Hình 2: Khái niệm Columns trong DataGridView