Tạo Dynamic control khi chương trình đang thực thi trong C#


Chào các bạn!
Hôm nay mình xin giới thiệu với các bạn cách thêm control động hay còn gọi là dynamic control trong C# windows form.


GIỚI THIỆU

Trong nhiều chương trình, đôi khi bạn cần tạo thêm một control mới ngay trong lúc chương trình đang thực thi, hoặc xóa một control hiện có sẵn.
Vậy thì làm thế nào? Lấy đâu ra giao diện thiết kế của Visual Studio để thêm?
Khi đó ta phải sử dụng control động (Dynamic controls)

Dynamic control trong lập trình C#

Visual Studio .NET không có mảng chứa control như Visual Basic 6.0. Nhưng tin vui là bạn vẫn có thể tự thiết lập để làm những điều tương tự. Các ưu điểm của C# Dynamic controls là chúng có thể được tạo ra để phản hồi với cách mà người dùng tương tác với các ứng dụng. Các control được thêm vào trong lúc chương trình thực thi thường là textbox hoặc button. Nhưng tất nhiên, hầu như tất cả các C# control đều có thể được tạo ra như là một dynamic control


LÀM THẾ NÀO ĐỂ TẠO CONTROL ĐỘNG TRONG C#

  • Đầu tiên các bạn cần khai báo một đối tượng Control (nhớ using các namespace cần thiết cho control cần dùng)
  • 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ó.

Ta thực hành thôi :D 
Đầu tiên trong trình thiết kế, ta thêm một button, và cài đặt sự kiện click cho nó, mục đích khi bấm vào nút nó sẽ tự thêm một textbox mới như hình ở đầu bài.
Sau đó sử dụng đoạn code sau, và xem kết quả xảy ra nhé :) 

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int count = 1;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            AddNewTextBox();
        }

        public System.Windows.Forms.TextBox AddNewTextBox()
        {
            System.Windows.Forms.TextBox txt = new System.Windows.Forms.TextBox();
            this.Controls.Add(txt);
            txt.Top = count * 25;
            txt.Left = 100;
            txt.Text = "Icetea Viet TextBox " + this.count.ToString();
            count = count + 1;
            return txt;
        }
    }
}

   - Vậy là xong phần tạo. Tiếp theo là thao tác hoặc xóa controls. Để 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 list Controls của form, Key của control, Name hoặc Text của control...)
   - Bạn hãy tham khảo các method sau: this.Controls.RemoveAt(int index), this.Controls.RemoveByKey(string 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
foreach (TextBox txtBox in this.Controls.OfType< TextBox >())
{
        if(txtBox.Text == "IceTea Viet")
        {
               //Do something
        }

        //other condition
}
Như vậy là ta đã biết cách tạo và sử dụng một dynamic control cho mình rồi.
Chúc các bạn học tốt, và nhớ để lại bình luận của mình bên dưới nhé :)


Post a Comment

[facebook][blogger]

Contact Form

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget