Nội dung
Giới thiệu
Một chương trình xây dựng trên nền tảng C# nhiều khi cần phải sử dụng tới các Controls động hay còn gọi là Dynamic Control, nghĩa là chúng ta không sử dụng các Cotnrol sẵn có ngay từ đầu, mà sẽ thiết kế chúng bằng Code, khi chương trình chạy Code sẽ thực thi và Controls sẽ được hiển thị. Bài hôm nay csharpcanban.com sẽ hướng dẫn các bạn tạo Controls động trong C#, có ví dụ minh họa và code Demo, các bạn có thể tải về để sử dụng.
Lợi ích của Controls động trong C# là người dùng có thể tạo ra chúng khi họ tương tác với chương trình. Bạn có thể tạo ra bất cứ Control động nào có trong C#. Như hình dưới đây, các bạn sẽ thấy các TextBox được tạo ra tự động sau khi nhấn vào Button1.
Làm thế nào để tạo ra Dynamic Controls trong C# ?
– Đầu tiên các bạn cần khai báo đối tượng Control (sử dụng các namespace cần thiết cho control này).
– Thiết lập các thuộc tính cần thiết cho đối tượng vừa khai báo như: Vị trí (top, left, bottom, right), Text, Font, Color,….
– Thêm Control vào danh sách Controls của form chứa nó.
Xây dựng chương trình
Chương trình dưới đây sẽ giúp bạn hiểu hơn về vấn đề tạo ra Dynamic Controls trong C#, và thay đổi các thuộc tính của Dynamic Control trong khi chạy chương trình. Mục tiêu là tạo ra chương trình chứa 02 nốt bấm, sau mỗi lần bấm vào Button1 sẽ tạo ra một Textbox động có thuộc tính TextBox, và khi bấm vào Button2 sẽ xóa Textbox1.
Như vậy là xong phần tạo tao các Textbox động. Tiếp theo ta sẽ thực hiện thao tác xóa các Textbox động này. Để xóa control xác định thì bạn cần biết được một trong các thông tin sau (thứ tự của control đó trong danh sách Controls của Form, Key của control, Name hoặc Text của control…), khi đã biết được các thông tin chính xác của Controls cần xóa, thì các bạn hãy tham khảo các method sau để thực hiện xóa chúng:
this.Controls.RemoveAt(int index); //Xóa Control theo chỉ số Index
this.Controls.RemoveByKey(string key); //Xóa Control theo Key
Hoặc các bạn có thể sử dụng vòng lặp foreach, duyệt qua tất cả các Control trong list Controls và xét điều kiện, như dưới đây ta thực hiện xóa Textbox có thuộc tính Text là “TextBox 1”.
foreach (TextBox txtBox in this.Controls.OfType< TextBox >()) { if(txtBox.Text == "TextBox 1") { //Thực hiện tác vụ } }
Toàn bộ mã nguồn
Đầu tiên bạn tạo một Project có tên là DynamicControl, tiếp theo kéo 02 Button vào Form đặt tên lần lượt là button_createDC và button_delDC, sao chép và dán đoạn mã sau đây vào, tiếp theo gán cho các Button có tên button_createDC và button_delDC các sự kiện Click tương ứng.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace DynamicControl { public partial class Form1 : Form { int cLeft = 1; public Form1() { InitializeComponent(); } private void button_createDC_Click(object sender, EventArgs e) { AddNewTextBox(); //Gọi hàm tạo Dynamic Textbox } public System.Windows.Forms.TextBox AddNewTextBox() { System.Windows.Forms.TextBox txt = new System.Windows.Forms.TextBox(); //Khởi tạo đối tượng Textbox có tên là txt this.Controls.Add(txt); //Thêm đối tượng txt vào Form txt.Top = cLeft * 25; //Thiết lập thuộc tính Top txt.Left = 100; //Thiết lập thuộc tính Left txt.Text = "TextBox " + this.cLeft.ToString(); //Thiết lập thuộc tính Text cho Textbox cLeft = cLeft + 1; return txt; //Trả lại đối tượng txt với các thuộc tính kèm theo } private void button_delDC_Click(object sender, EventArgs e) { foreach (TextBox txtBox in this.Controls.OfType<TextBox>()) { if (txtBox.Text == "TextBox 1") { this.Controls.Remove(txtBox); } } } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { System.Diagnostics.Process.Start("https://csharpcanban.com"); } } }
Giao diện chương trình
Sau khi nhấp vào nốt “Tạo Textbox” 9 lần sẽ tạo ra 9 Textbox động.
Sau khi nhấp chuột vào nốt “Xóa Textbox” sẽ xóa Textbox1.
Lời Kết
Như vậy các bạn đã hiểu hơn về cách tạo và xóa Dynamic Controls trong C#. Hãy thực hành và áp dụng kiến thức trên đây vào chương trình của bạn. Mọi thắc mắc hãy gửi bình luận bên dưới nhé. Csharpcanban.com sẽ giải đáp ngay sau khi đọc được comment của các bạn.
Trong các bài tiếp theo mình sẽ tiếp tục hướng dẫn các bạn sử dụng các Controls trong C# như: sử dụng Combobox, Listbox, Radio Button, và nhiều Control khác, hãy thường xuyên truy cập để đón đọc các bài viết mới trên website csharpcanban.com. Chúc các bạn thành công !!!
Bản quyền
Nội dung trên csharpcanban.com được biên soạn, biên dịch từ nhiều nguồn khác nhau, đồng thời đã được viết thành chương trình. Csharpcanban.Com bảo lưu mọi quyền đối với những bài viết này. Mọi hình thức sao chép đều cần phải được Csharpcanban.Com cấp phép.
Tải CODE
Để tải Code, các bạn hãy nhấp vào Nốt bấm dưới đây. Do mình dử dụng dịch vụ lưu trữ của MediaFire cho nên các bạn hoàn toàn yên tâm là không có virus đâu nhé.
Mật mã giải nén: csharpcanban.com