Category Archives: Win Form

Tìm hiểu về giao diện WinForm .NET (C#)

ListView

ListView là một control dùng để hiển thị một danh sách các item với các biểu tượng. Chúng ta có thể sử dụng một  ListView để tạo ra một giao diện giống như cửa sổ bên phải của Windows Explorer. Bài viết này sẽ trình bày các cách sử dụng cơ bản đối với control này.

 

1. Thêm một ListView control vào ứng dụng (adding the Listview control to the application)

Có 2 cách thêm một ListView vào ứng dụng:

–  Kéo thả ListView từ Toolbox vào Form:

image

–  Sử dụng code để add ListView vào Form:

ListView myListView = new ListView();   // Khai báo một ListView control.  
myListView.Size = new System.Drawing.Size(390, 100);   // Kích thước hiển thị
this.Controls.Add(myListView);          // Add ListView control vừa khai báo vào Form

2. Thay đổi chế độ xem (Changing the display modes)image

–  Tùy chỉnh thuộc tính View trong cửa sổ Properties của Listview. Sẽ có 4 thuộc tính hiển thị để chúng ta lựa chọn:  LargeIcon, Details, SmallIcon, List Tile.

–  Sử dụng code để tùy chỉnh thuộc tính view:

image

Ví dụ:

myListView.View = View.SmallIcon;

3. Add các item vào ListView (Khi ListView không theo cách hiển thị Details)

–  Sử dụng thuộc tính Items trong cửa sổ Properties. Khi click vào button … ở thuộc tính Items. Thì cửa sổ như hình dưới sẽ hiện ra để bạn add item vào.

image

–  Mỗi Item add sẽ có các thuộc tính như: Text, ForeColor, Text, ImageIndex…

–  Chúng ta cũng có thể viết code để add các item vào ListView với mục đích tương tự cách làm trên. Ví dụ:

myListView.Items.Add("Công Nghệ Thông Tin");
myListView.Items.Add("Bách Khoa");
myListView.Items.Add ("Khoa Học Tự Nhiên");
myListView.Items.Add("Nhân Văn");
myListView.Items.Add("Kinh Tế - Luật");

Và kết quả sẽ là:

image

4. Add các cột vào ListView (Adding columns to the ListView)

–  Chúng ta cũng có thể thực hiện một cách đơn giản như cách add các items ở trên:

image

–  Hoặc cũng có thể sử dụng code:

myListView.Columns.Add("Tên Trường", 200);
myListView.Columns.Add("Số lượng sinh viên", 100);

– Lưu ý:  Để có thể hiển thị các columns thì chúng ta phải chọn chế độ xem là Details

myListView.View = View.Details;

image

5. Add sub Item vào Listview (Khi ListView ở chế độ xem Details)

–  Sử dụng giống như cách add các items trong phần 3 đã trình bày. Ở chúng ta click vào thuộc tính SubItem một cửa sổ mới sẽ hiện ra khá giống với cửa sổ add items

image

–  Giờ chúng ta có thể add các item con cho item chính một cách bình thường giống như khi add item chính.

image

–  Chúng ta cũng có thể sử dụng code để add các giá trị con cho item như:

// Add subitem
ListViewItem cntt = new ListViewItem("Công Nghệ Thông Tin");
ListViewItem.ListViewSubItem svcntt = new ListViewItem.ListViewSubItem(cntt, "3.000 sinh viên");
cntt.SubItems.Add(svcntt);
myListView.Items.Add(cntt);

ListViewItem bk = new ListViewItem("Bách Khoa");
ListViewItem.ListViewSubItem svbk = new ListViewItem.ListViewSubItem(bk, "18.00 sinh viên");
bk.SubItems.Add(svbk);
myListView.Items.Add(bk);

ListViewItem khtn = new ListViewItem("Khoa Học Tự Nhiên");
ListViewItem.ListViewSubItem svkhtn = new ListViewItem.ListViewSubItem(khtn, "20.000 sinh viên");
khtn.SubItems.Add(svkhtn);
myListView.Items.Add(khtn);

ListViewItem nv = new ListViewItem("Khoa Học Xã Hội & Nhân Văn");
ListViewItem.ListViewSubItem svnv = new ListViewItem.ListViewSubItem(nv, "15.000 sinh viên");
nv.SubItems.Add(svnv);
myListView.Items.Add(nv);

ListViewItem ktl = new ListViewItem("Kinh Tế - Luật");
ListViewItem.ListViewSubItem svktl = new ListViewItem.ListViewSubItem(ktl, "10.000 sinh viên");
ktl.SubItems.Add(svktl);
myListView.Items.Add(ktl);

–  Và kết quả sẽ là:

image

 

6. Thêm Style cho SubItems

Trong chế độ xem Details, chúng ta muốn thêm các hiển thị khác nhau của cách SubItems từ Item cha chúng ta sử dụng thuộc tính UseItemStyleForSubItem = true; Như vậy chúng ta sẽ xác định được các kiểu khác nhau cho các subitems.

Ví dụ:

ListViewItem ktl = new ListViewItem("Kinh Tế - Luật");
ListViewItem.ListViewSubItem svktl = new ListViewItem.ListViewSubItem(ktl, "10.000 sinh viên");
ktl.SubItems.Add(svktl);
myListView.Items.Add(ktl);
ktl.UseItemStyleForSubItems = true;

7. Xóa item (Removing item)

Việc xóa các item của ListView được thực hiện rất đơn giản.

–  Để xóa toàn bộ các item trong ListView có tên là myListView ta thực hiện lệnh

myListView.Clear();

–  Để xóa item nào ta gọi phương thức Remove():

ListViewItem cntt = new ListViewItem("Công Nghệ Thông Tin");
cntt.Remove();

–  Xóa item ở vị trí thứ a trong ListView ta sử dụng phương thức RemoveAt():

myListView.Items.RemoveAt(2);

8.  Liên kết hình ảnh với danh sách các items

–  Đây là một tính năng làm đẹp cho ListView. Để liên kết các items trong danh sách chúng ta cần phải có một imageList với một tập hợp các ảnh. Điều này được thực hiện trong trong phương thức ListView.Items.Add(…), sử dụng đối số imageIndex – là chỉ mục liên kết với hình ảnh trong imageList.

–  Đầu tiên kéo một imageList từ Toolbox vào Form (tên mặc định sẽ là imageList1)

image

–  Trong thuộc tính Images của imageList1 sẽ được sử dụng để add hình ảnh vào imageList1 như:

image

–  Bây giờ ta sử dụng đối số imageIndex trong phương thức add item vào listview để liên kết hình ảnh với imageList1:

myListView.SmallImageList = imageList1; // Liên kết danh sách hình ảnh nhỏ với imageList1

ListViewItem cntt = new ListViewItem("Công Nghệ Thông Tin", 0);            
ListViewItem.ListViewSubItem svcntt = new ListViewItem.ListViewSubItem(cntt, "3.000 sinh viên");            
cntt.SubItems.Add(svcntt);
myListView.Items.Add(cntt);

ListViewItem bk = new ListViewItem("Bách Khoa", 1);
ListViewItem.ListViewSubItem svbk = new ListViewItem.ListViewSubItem(bk, "18.00 sinh viên");
bk.SubItems.Add(svbk);
myListView.Items.Add(bk);

ListViewItem khtn = new ListViewItem("Khoa Học Tự Nhiên",2);
ListViewItem.ListViewSubItem svkhtn = new ListViewItem.ListViewSubItem(khtn, "20.000 sinh viên");
khtn.SubItems.Add(svkhtn);
myListView.Items.Add(khtn);

ListViewItem nv = new ListViewItem("Khoa Học Xã Hội & Nhân Văn", 3);
ListViewItem.ListViewSubItem svnv = new ListViewItem.ListViewSubItem(nv, "15.000 sinh viên");
nv.SubItems.Add(svnv);
myListView.Items.Add(nv);

ListViewItem ktl = new ListViewItem("Kinh Tế - Luật", 4);
ListViewItem.ListViewSubItem svktl = new ListViewItem.ListViewSubItem(ktl, "10.000 sinh viên");
ktl.SubItems.Add(svktl);
myListView.Items.Add(ktl);

–  Lưu ý đối số thứ 2 trong phương thức add item chính là chỉ mục tham chiếu tới hình ảnh trong imageList1.

–  Và kết quả mà chúng ta có được:

image

9. Thêm CheckBox vào trước mỗi item trong ListView (Adding checkbox to the listview)

–  Đôi khi chúng ta cần một checkbox đứng trước mỗi item trong danh sách của Listview ví dụ như: khi chọn các món hàng trong danh sách các hàng hóa… Ta thực hiện phương thức sau đây:

myListView.CheckBoxes = true;

–  Bây giờ chúng ta có thể xử lý sự kiện item nào được chọn bằng cách thêm xử lý trong sự kiện

myListView.ItemChecked += new ItemCheckedEventHandler(myListView_ItemChecked);

–  Hình ảnh minh họa ListView khi thêm checkbox:

image

 

download demo ListView

http://thanhcuong.wordpress.com

Add Control by Code

Đến với bài viết hôm nay ta sẽ tìm hiểu một số thủ thuật tương tác control thường dùng trong lập trình windows form với csharp dotnet. Như ta biết rằng khi lập trình ứng dụng windows form trong visual studio ta được hỗ trợ mạnh mẽ cho việc tạo, xử lý control bằng các thao tác kéo thả. Tại đây ta có thể dễ dàng thiết lập giá trị cho các thuộc tính và thấy được thay đổi trực quan. Nhưng trong các ứng dụng không phải khi nào cũng có thể dùng hoàn toàn các thao tác kéo thả; Đối với những control thay đổi “động” theo dữ liệu thì ta không thể cố định giá trị trước; Có những control được sinh ra ở một bước nào đó sau khi chạy chương trình… Như vậy ta cũng cần phải thông thạo các thao tác xử lý control trên code để có thể áp dụng trong nhiều dạng ứng dụng khác nhau.a sẽ tìm hiểu một số thủ thuật tương tác control thường dùng trong lập trình windows form với csharp dotnet. Như ta biết rằng khi lập trình ứng dụng windows form trong visual studio ta được hỗ trợ mạnh mẽ cho việc tạo, xử lý control bằng các thao tác kéo thả. Tại đây ta có thể dễ dàng thiết lập giá trị cho các thuộc tính và thấy được thay đổi trực quan. Nhưng trong các ứng dụng không phải khi nào cũng có thể dùng hoàn toàn các thao tác kéo thả; Đối với những control thay đổi “động” theo dữ liệu thì ta không thể cố định giá trị trước; Có những control được sinh ra ở một bước nào đó sau khi chạy chương trình… Như vậy ta cũng cần phải thông thạo các thao tác xử lý control trên code để có thể áp dụng trong nhiều dạng ứng dụng khác nhau.

Thủ thuật tìm Code

Tiếp tục vấn đề thiết lập thuộc tính cho control: Các thao tác này sẽ rất dễ dàng khi thao tác trong giao diện kéo thả windows form với visual studio , muốn xác lập thuộc tính nào chỉ cần vào bảng properties và dễ dàng thay đổi; và bạn không cần quan tâm code bên dưới là thế nào vì chương trình đã tự thêm code. Còn trường hợp xử lý trên code: Giả sử bạn muốn xác lập một thuộc tính nào đó cho control mà lại chưa biết đoạn code đó như thế nào?! Có thể bạn sẽ dùng tài liệu nào đó hoặc là tìm kiếm trên mạng. Có một cách sẽ nhanh và hiệu quả hơn rất nhiều đó là xem trực tiếp mã do trình biên dịch tự sinh ra.

Để dễ hiểu hơn ta xét ví dụ bên dưới:
Giả sử ta cần tạo 1 comboBox bằng Code với một số thuộc tính như: kích thước và màu sắc font chữ thay đổi, có 2 phần tử như hình vẽ, thiết lập thuộc tính anchor…
Xử lý Control trong Csharp | MicrosoftTech.Net
Với những yêu cầu trên nếu làm trong giao diện kéo thả của windows form thì không có gì để nói, nhưng nếu thực hiện trong code thì có thể bạn sẽ gặp chút khó khăn vì không biết được code để thiết lập là gì??! Thay vì mất thời gian tìm kiếm, tra cứu ở đâu đó bạn có thể dễ dàng xem chúng bằng cách vào tab Solution Explorer, vào Form chứa control bạn đang làm mẫu, tiếp đó vào file Designer.cs là ta sẽ có những đoạn code mình cần.

Nhìn vào hình ta sẽ thấy được đoạn code thiết lập thuộc tính Anchor, Font, thêm các phần tử cho comboBox rồi cả thuộc tính xác lập vị trí – Location…

Với cách làm này sẽ giúp bạn dễ dàng khám phá những đoạn code mà mình chưa biết, giúp tiết kiệm được nhiều thời gian hơn!
Xử lý Control trong Csharp | MicrosoftTech.Net
Xử lý Code tạo Event cho Controls

Vấn đề tiếp theo là cách tạo Event cho Code. Trong giao diện kéo thẻ khi muốn xác lập Event cho controls nào chỉ cần chọn Control đó và nhấp đôi chuột vào Event tương ứng trong bảng properties để add code xử lý nữa là xong.
Xử lý Control trong Csharp | MicrosoftTech.Net
Và… thủ thuật để có đoạn code xác lập Event cũng tương tự như trên. Tại file Designer.cs ta sẽ có được cấu trúc của code gọi Event, còn trong file thiết Form chứa control tương ứng sẽ có code thực thi Event. Như vậy ta đã có đủ trọn bộ code để xử lý Event cho một controls. Theo ý kiến của cá nhân tôi, Evetn của các Control thường rất đa dạng kiểu đối số cũng như kiểu Event cũng khác nhau, với cách làm này ta sẽ dễ dàng có được đoạn code mà mình mong muốn để sử dụng trong việc xử lý Controls trong bằng Code.
Xử lý Control trong Csharp | MicrosoftTech.Net

MicrosoftTech.Net

Trong bài viết này chúng ta sẽ tìm hiểu về ComboBox trong lập trình Csharp WindowsForm. ComboBox là một control trong đó chứa danh sách các phần tử (gọi là các Item), các phần có giá trị string và được gán index để truy xuất. Khác với ListBox có thể hiển thị tất cả các giá trị cùng lúc, còn ComboBox chỉ có thể hiển thị duy nhất 1 kết quả. Lần này ta sẽ tìm hiểu ComboBox thông qua ví dụ nhỏ bên dưới để thấy được một số thuộc tính cũng như phương thức thao tác trên Item của ComboBox, ngoài ra tôi còn bổ sung 1 số phần nhỏ có liên quan đến các control khác – thiết nghĩ cũng rất có ích cho các bạn!

1. Csharp ComboBox

Trong ví dụ này sẽ minh họa cách thêm bớt phần tử (Item) cho ComboBox – Tương ứng với chức năng “Add Item” và “Remove Item”.

  • Khi thêm mới 1 phần tử cho ComboBox thì phần tử đó sẽ được thêm vào cuối cùng, và đối số chính là giá trị (Text : string) của phần tử đó.
  • Trường hợp xóa phần tử trong ComboBox ta sẽ có 2 cách tiếp cận: Cách thứ nhất là xóa thông qua số thứ tự (index) của của phần tử đó. Cách thứ hai là thông qua giá trị (Text : string).
  • Ở bên dưới ta có 3 textBox để theo dõi thông tin cập nhật của ComboBox: Selected Index cho biết index của Item đang được chọn. Text of Index trả về giá trị của Item được chọn. Sum of Items là tổng số Item trong ComboBox.

ComboBox | Control trong Lập trình Windows Form | Csharp
2. Phân tích Code

  • Ta bắt đầu từ cái đơn giản nhất là hàm updateInfo(); dùng để cập nhật thông tin ComboBox khi có thay đổi.
  • Để tránh trường hợp phát sinh lỗi (exception) khi Button được nhấn trong khi textbox4 bên trên không có giá trị, tôi thêm vào event textBox4_TextChanged(). Khi textBox4 rỗng thì thuộc tính enable của button1 sẽ false, và ngược lại button1 được enable khi tồn tại giá trị bên trong textbox4.
  • radioButton1_CheckedChanged() có nhiệm vụ disable hoạt động của radioButton3 (At Index) khi chọn chức năng Add Item vì ở đây ta không thêm phần tử vào comboBox theo chỉ số Index, mọi phần tử thêm mới đều được xếp sau cùng.
  • Mọi xử lý chính của chương trình đều nằm trong button1_click();
  • Hàm thêm Item cho comboBox: comboBox1.Items.Add(textBox4.Text);
  • Hàm xóa Item tại index cho trước comboBox: comboBox1.Items.RemoveAt(Convert.ToInt32(textBox4.Text));
  • Hàm xóa Item theo giá trị Text của Item: comboBox1.Items.Remove(textBox4.Text);
  • Khi xóa Item theo giá trị Text ta cần kiểm soát trường hợp xảy ra lỗi khi giá trị nhập vào không tồn tại trong comboBox, ta kiểm soát trường hợp này bằng cách cho duyệt tất cả các Item nếu đến Item nào thỏa mãn thì xóa nó và dừng chương trình. Nếu duyệt hết đồng nghĩa với việc không tồn tại giá trị cần xóa.

ComboBox | Control trong Lập trình Windows Form | Csharp
Qua bài viết này chắc bạn đã nắm được hết những điều cần thiết để điều khiển hoạt động của comboBox. Không chỉ thế tôi tin rằng với ví dụ trên một chút nào đó cho bạn kỷ năng trong việc kiểm soát các lỗi phát sinh dù là rất nhỏ – đây là những kỹ năng không thể thiếu trong Lập trình windows Form, một khi bạn hiểu rõ bản chất của từng trường hợp có thể phát sinh lỗi thì khi làm một chương trình lớn bạn sẽ dễ dàng hơn rất nhiều. Trong lập trình giao diện windows Form thì việc quản lý lỗi phát sinh trong lúc tùy biến control thường rất phức tạp, đa phần dẫn đến trường hợp bể khung, các control xếp lộn không theo trật tự, mất yếu tổ thẫm mĩ, trực quan…

MicrosoftTech.Net

Radio Button

1. Radio Button
Trong bài viết hôm nay xin được giới thiệu đến các bạn một control phổ biến, thường dùng trong Lập trình Windows Form – Radio Button. Chắc hẳn chúng ta không còn xa lạ gì với control này, Control biểu tưởng hình tròn với 2 trạng thái chọn hoặc không chọn. Nếu so sánh Radio Button với CheckBox thì chúng ta sẽ thấy được sự tương đồng, nhưng điểm khác biệt nằm ở chỗ trong 1 nhóm Radio Button thì chỉ có duy nhất 1 lựa chọn, chọn cái này cái kia sẽ mất. Còn đối với checkBox thì có thể cùng lúc đưa ra nhiều lựa chọn khác nhau.

2. Nhóm Radio Button
Trong 1 nhóm bao gồm nhiều RadioButton thì chỉ có duy nhất 1 RadioButton được đánh dấu. Khi có cái mới được chọn thì cái cũ sẽ bị loại bỏ. Vậy những RadioButton nào được xem là cùng 1 nhóm?! Chung 1 group ở đây là tính những RadioButton cùng nằm trực tiếp trên cùng 1 control. Ở đây tôi nhấn mạnh phải cùng nằm trực tiếp trên cùng 1 control, như vậy control này phải là duy nhất cho 1 nhóm xác định. Ở đây 3 RadioButton cùng 1 nhóm, và control trực tiếp ở đây là GroupBox: Group RadioButton. Như vậy nếu ta có RadioButton khác nằm ngoài GroupBox này thì không được xem là cùng nhóm.

3. Ví dụ
Trong ví dụ bên dưới ta sẽ tìm hiểu một số thuộc tính quan trọng cần thiết tối thiểu cho một RadioButton. Để hiểu hơn về hoạt động của RadioButton tôi sẽ tạo và thiết lập thuộc tính cho chúng từ Code.

Đầu tiên ta tạo mảng RadioButton với 3 phần tử, sau đó Lần lượt khởi tạo cho từng phần tử. Ta thấy 3 RadioButton được tạo chung nhóm trên control Group RadioButton. Giá trị text của RadioButton được thiết lập bởi thuộc tính .Text và cũng như các control khác thuộc tính location dùng để xác lập vị trí của control trên control cha chứa nó. Và cuối cùng ta xác lập sự kiện checkedChanged cho 3 RadioButton, khi một một RadioButton khác được chọn thì sẽ có thông báo trạng thái bên trên TextBox

Radio Button | Lập trình Windows Form | MicrosoftTech.Net

MicrosoftTech.Net

1. CheckBox là gì

CheckBox là một control trong Lập trình windows Form – Chúng ta thường gặp trong các trường hợp lựa chọn các chức năng, giá trị cho chương trình. Xét về cấu tạo CheckBox gồm 2 phần: Phần để tick chọn và phần text miêu tả cho nội dung của CheckBox. Như trong bài viết trước tôi đã có so sánh nhỏ giữa Radio Button và CheckBox. Về cách hoạt động của CheckBox chỉ đơn thuần là thiết lập giá trị chọn hoặc bỏ chọn. Trong một nhóm nhiều CheckBox ta có thể đưa ra nhiều lựa chọn khác nhau.

2. Một số đặc điểm

Thông thường ta thấy trong CheckBox ô vuông điều kiểm năm bên trái còn phần Text miêu tả sẽ nằm bên phải; Và tất nhiên ta hoàn toàn có thể thay đổi vị trí của chúng thông qua thuộc tính CheckAlign = ContentAlignment.MiddleRight;
Vì hoạt động của CheckBox khá đơn giản nên Event đi kèm ta chỉ cần quan tâm đến sự kiện CheckedChanged (Thay đổi trạng thái lựa chọn).

3. Ví dụ

Ở đây tôi đưa ra ví dụ nhỏ về cách khởi tạo CheckBox trong Code và thiết lập một số thuộc tính cần có và đi kèm là event CheckChanged để tính số lượng đáp án được chọn sau mỗi lần có sự thay đổi trong việc chọn lựa CheckBox.

CheckBox | Control trong Lập trình Windows Form | Csharp

MicrosoftTech.Net

CheckedListBox

1. CheckedListBox
Trong các bài gần đây chúng ta đã lần lượt đi qua các control như CheckBox, RadioButton, ListBox; Trong bài viết hôm nay sẽ giới thiệu một control có nét tương đồng như trên. CheckedListBox – Là một ListBox được kết hợp với CheckBox để mỗi phần tử trong danh sách có thêm một CheckBox bên trái (có thể đổi sang phải), từ đó mở rộng thêm một số chức năng hữu ích.

2. Ví dụ minh họa
Demo nhỏ bên dưới sẽ đề cập đến ListBox, CheckedListBox và một số phương thức, thuộc tính kèm theo. Trong chương trình sẽ có sự tương tác qua lại giữa các control nhằm thấy được cách thức hoạt động của chúng.
Trong ví dụ bên dưới theo thứ tự ta có các control sau: checkListBox1, listBox1, listBox2, listBox3, textBox1, textBox2, button1, button2.

  • Khi khởi chạy chương trình, ta sẽ tạo 30 Items là các checkBox bên trong checkListBox, câu lệnh khởi tạo nằm trong hàm init(). Tại checkListBox1 mỗi khi có 1 Item được check thì nó sẽ được thêm vào tại listBox1 bên phải; và ngược lại, khi có 1item được uncheck thì nó sẽ bị xóa khỏi listBox1.
  • TextBox1, textBox2 ghi nhận Item đang được chọn tại checkListBox1 và listBox1.
  • Còn ở ListBox2, mỗi khi có 1 item tại checkListBox1 được check thì nó sẽ được thêm vào listBox2, và không có thao tác remove khi uncheck item nào đó tại checkListBox1.
  • 2 button có nhiệm vụ chuyển item qua lại giữa: listBox2 và listBox3.

CheckedListBox | Lập trình Windows Form với Csharp
3. Code tham khảo

Trong ví dụ bên dưới chúng ta cần quan tâm đến những thuộc tính sau đây của listBox và checkListBox : (Hầu hết các thuộc tính của 2 control tương tự nhau)

  • checkListBox.Items.Add( string ); | ListBox.Items.Add( string ); Thêm phần tử cho control, phần tử thêm vào là các string.
  • checkListBox.Items.Remove( string); | ListBox.Items.Remove( string ); Xóa bỏ phần tử có giá trị = string;
  • ListBox.SelectedItem.toString(); trả về chỉ số (số thứ tự | index) của phần tử đang được chọn.

CheckedListBox | Lập trình Windows Form với Csharp

MicrosoftTech.Net

ProcessBar

Trong bài viết về windowsForm hôm nay chúng ta sẽ tìm hiểu về control Processbar – một controls cũng rất hữu dụng trong nhiều chương trình. Chức năng thường thấy của processbar là để cho biết tiến trình làm việc của chương trình trong một thời điểm nào đó, hoặc thường gặp nhất là trong các chương trình nghe nhạc, xem phim có thêm control này để biết đoạn nhạc, phim đang tới đâu và đồng thời có thể dy chuyển tới đoạn mình muốn.

1. Processbar control
Hình bên dưới là processbar control trong Windows 7 được hỗ trợ hiệu ứng hình ảnh cải tiến nhiều so với Windows XP, thanh tiến trình mướt hơn, màu sắc bắt mắt hơn. Làm việc với processbar control ta cần quan tâm tối thiểu đến 4 thuộc tính sau:

  • Minimum: Thiết lập giá trị nhỏ nhất.
  • Maximum: Thiết lập giá trị lớn nhất.
  • Step: Thiết lập giá trị cho mỗi nấc trong tiến trình của processbar.
  • Values: Thiết lập / Lấy giá trị hiện thời của processbar.

Như các control khác, processbar được hỗ trợ nhiều event khác nhau; Nhưng thiết nghĩ 2 event hữu dụng nhất là MouseDown và MouseMove dùng cho trường hợp kéo thả giá trị trên processbar.
Tìm hiểu ProcessBar Control Lập trình Windows Form | MicrosoftTech.Net
2. Ví dụ về processbar control
Trong ví dụ bên dưới ta sẽ tìm hiểu những thao tác xử lý trên processbar, với các thao tác này ta đã hoàn toàn làm chủ được control này, và có thể ứng dụng trong nhiều trường hợp khác nhau:

  • Đầu tiên ta cần thiết lập giá trị Maximum cho precessbar thông qua kích thước chiểu ngang (Size.Width). Giá trị minimum đã thiết lập bằng 1 trong design.
  • Điều khiển process chạy từ trái qua phải: Ở đây ta dùng vòng lặp for chạy từ minimum đến maximum và tại mỗi bước thiết lập giá trị Value cho processbar.
  • Điều khiển process chạy từ phải qua trái: Ngược lại với thao tác trên.
  • Event MouseDown thực hiện kéo tiến trình tới vị trí nhấp chuột.
  • Event MouseMouse thực hiện kéo rê tiến trình theo chuột.

Tìm hiểu ProcessBar Control Lập trình Windows Form | MicrosoftTech.Net

Tìm hiểu ProcessBar Control Lập trình Windows Form | MicrosoftTech.Net

MicrosoftTech.Net

ImageList

1. ImageList

Chúng ta đã biết tới ListBox và ComboBox là những Control dùng để chứa danh sách dữ liệu, bây giờ đối với ImageList cũng tương tự vậy. ImageList dùng để lưu trữ danh sách hình ảnh để có thể quản lý dễ dàng hơn, nói đơn giản hơn ImageList đưa hình ảnh vào trong mảng và chúng ta có thể thao tác trên hình ảnh thông qua chỉ số, tất cả sẽ cùng 1 tên chung chứ không phải là từng hình ảnh rời rạc. ImageList không phải là Control hiển thị trực tiếp nên không thể thấy trên giao diện Form, thay vào đó nó sẽ nằm ở thanh công cụ bên dưới của Visual Studio.

2. Làm việc với ImageList
Để thêm hình ảnh vào ImageList có thể thao tác trong giao diện thiết kế hoặc cũng có thể thêm bằng Code thực thị. Trong giao diện thiết kế ta chỉ cần nhấp vào Control ImageList để hiển thị hộp thoại quản lý hình ảnh, tại đây có thể thêm, bớt hình ảnh. Lưu ý: Hình ảnh trong ImageList chỉ giới hạn ở kích 256*256 pixel. Có thể sử dụng hình ảnh màu 32bit. Nếu muốn add hình ảnh vào ImageList bằng Code thực thi thì cần phải đưa đường dẫn trực tiếp của hình ảnh vào phương thức add() của ImageList.
Tìm hiểu Control ImageList trong Lập trình Windows Form Csharp | MicrosoftTech.Net
3. Ví dụ minh họa
Trước tiên dùng Dialog Open File để mở file ảnh cần đưa vào ImageList, tiếp đó lấy đường dẫn trực tiếp của hình ảnh để đưa vào ImageList. ImageList quản lý hình ảnh trong danh sách thông qua chỉ số (Index), lợi dụng đặc điểm này ta sử dụng 1 ListBox để đưa ra danh sách hình ảnh trong ImageList nhằm khi chọn hình ảnh nào thì nó sẽ được hiển thị trong 1 PictureBox khác. Sau mỗi lần thêm hình ảnh mới vào ImageList thì ListBox được refesh danh sách lại.
Tìm hiểu Control ImageList trong Lập trình Windows Form Csharp | MicrosoftTech.Net

MicrosoftTech.Net