Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Xóa phần Text của tất cả control(điểu khiển) trên Form trong lập trình C#

  1. #1
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Smile Xóa phần Text của tất cả control(điểu khiển) trên Form trong lập trình C#

    Vấn đề đặt ra: xóa tất cả nội dung của các textbox trong Form trên.

    Hướng suy nghĩ: A ha, ta đếm có 5 textbox, cứ chơi dòng code này là thỏa đề bài:
    Visual C# Code:
    1. textbox1.Text="";
    2. textbox2.Text="";
    3. textbox3.Text="";
    4. textbox4.Text="";
    5. textbox5.Text="";
    OK, đúng rồi đấy, bây giờ nâng cao thêm 1 tí, giả sử trong Form có 100 cái textbox. Hi hi, lúc này làm sao đây?? Không biết có ai can đảm ngồi gõ thủ công không nhỉ?
    Bây giờ, tớ vào vấn đề chính để giải quyết tình huống này, cụ thể như sau: đuyệt đệ quy qua tập hợp các điều khiển trên, đưa thuộc tính Text về "" mỗi khi tìm thấy điều khiển textbox
    Bạn có thể duyệt qua các điều khiển trên Form bằng Form.Controls, tập này chứa tất cả các điều khiển nằm trực tiếp trên bề mặt Form. Tuy nhiên ,nếu vài điểu khiển trong số đó là điều khiển container (GroupBox,Panel, TabPage,..), chúng có thể lại chứa điều khiển nữa. Do đó, cần sử dụng kỹ thuật đệ quy để kiểm tra tập hợp Controls.
    Trở lại tình huống trên, chúng ta sẽ gọi hàm XoaNoiDung một cách đệ quy để xóa phần Text của tất cả các textbox:

    Visual C# Code:
    1.         private void XoaNoiDung(Control ctrl)
    2.         {
    3.             if (ctrl is TextBox)
    4.             {
    5.                 ctrl.Text = string.Empty;
    6.             }
    7.             foreach(Control i in ctrl.Controls)
    8.             {
    9.                 XoaNoiDung(i);
    10.             }
    11.         }

    Ok, đã đến lúc thụ lý tình huống Click của button "Xóa" để hoàn thành bài tập nho nhỏ này:
    Visual C# Code:
    1.         private void btnXoa_Click(object sender, EventArgs e)
    2.         {
    3.             XoaNoiDung(this);
    4.         }

    Chúc các bạn thành công!

  2. #2
    Ngày gia nhập
    05 2007
    Bài viết
    6

    cách này kô tối ưu cho lắm , post lên cho vui !
    Code:
    public void XoaNoiDung(params TextBox[] textbox)
                {
                    foreach (TextBox txt in textbox)
                    {
                        txt.Text = String.Empty;
                    }
                }

  3. #3
    Ngày gia nhập
    06 2007
    Bài viết
    40

    private void btnXoa_Click(object sender, EventArgs e)
    {
    XoaNoiDung(this);
    }
    Cho mình hỏi chỗ này chút nhé. Đối tượng this ở đây chỉ đến Control nào thế ?(Form, hay một tập các control sử dụng trong Form...). Mình chưa hiểu rõ cơ chế dùng this trong trường hợp này.

  4. #4
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi abelegreen Xem bài viết
    Cho mình hỏi chỗ này chút nhé. Đối tượng this ở đây chỉ đến Control nào thế ?(Form, hay một tập các control sử dụng trong Form...). Mình chưa hiểu rõ cơ chế dùng this trong trường hợp này.
    this ở đây tượng trưng cho đối tượng Form.
    Bạn có thể hiểu Form là 1 control tổng quát nhất, nó chứa đựng tất cả các control khác.

  5. #5
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Em chưa hiểu tại sao đoạn mã trên lại phải dùng đệ quy
    Em nghĩ chỉ cần thế này là đủ
    Code:
    public void XoaNoiDung()
                {
                    foreach (TextBox txt in this.Controls)
                    {
                        txt.Text = String.Empty;
                    }
                }
    Vì chỉ có mỗi Form là có tâp hợp Controls nên đoạn chương trình của anh sẽ chỉ chạy đệ quy có 1 lần, tương ứng với thủ tục như trên. Thủ tục đệ quy như trên áp dụng được trừ phi 1 Form trở thành một điều khiển của Form khác, nghĩa là nó cũng nằm trong Controls của Form kia. Mà theo em đọc thì hình như không có cái này????

  6. #6
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Mặc định Xóa phần Text của tất cả control(điểu khiển) trên Form trong lập trình C#

    Trích dẫn Nguyên bản được gửi bởi hailoc12 Xem bài viết
    Em chưa hiểu tại sao đoạn mã trên lại phải dùng đệ quy
    Em nghĩ chỉ cần thế này là đủ
    Code:
    public void XoaNoiDung()
                {
                    foreach (TextBox txt in this.Controls)
                    {
                        txt.Text = String.Empty;
                    }
                }
    Vì chỉ có mỗi Form là có tâp hợp Controls nên đoạn chương trình của anh sẽ chỉ chạy đệ quy có 1 lần, tương ứng với thủ tục như trên. Thủ tục đệ quy như trên áp dụng được trừ phi 1 Form trở thành một điều khiển của Form khác, nghĩa là nó cũng nằm trong Controls của Form kia. Mà theo em đọc thì hình như không có cái này????
    Với đoạn code của em, thì giả sử Form chính chứa label thì những label sẽ có nhãn trống rỗng hết. Không chỉ Form là nơi chứa Controls đâu em, còn có GroupBox, TabPanel,.. nữa. Do đó phải dùng để quy để xóa tận gốc nhãn của textbox.

  7. #7
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Lạ nhỉ, em dùng Object Browser tìm thì chỉ thấy có Form và PropertyGrid là có tập hợp Controls thôi mà. Em đã tạo thử cái panel và 3 cái textbox trên đó, tuy nhiên trong phần khởi tạo của Form không hề thấy có dòng nào add 3 cái textbox đó vào Controls của Panel cả
    PHP Code:
    #region Windows Form Designer generated code
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            
    private void InitializeComponent()
            {
                
    this.textBox1 = new System.Windows.Forms.TextBox();
                
    this.textBox2 = new System.Windows.Forms.TextBox();
                
    this.textBox3 = new System.Windows.Forms.TextBox();
                
    this.textBox4 = new System.Windows.Forms.TextBox();
                
    this.textBox5 = new System.Windows.Forms.TextBox();
                
    this.textBox6 = new System.Windows.Forms.TextBox();
                
    this.textBox7 = new System.Windows.Forms.TextBox();
                
    this.textBox8 = new System.Windows.Forms.TextBox();
                
    this.textBox9 = new System.Windows.Forms.TextBox();
                
    this.textBox10 = new System.Windows.Forms.TextBox();
                
    this.button1 = new System.Windows.Forms.Button();
                
    this.panel1 = new System.Windows.Forms.Panel();
                
    this.textBox11 = new System.Windows.Forms.TextBox();
                
    this.textBox12 = new System.Windows.Forms.TextBox();
                
    this.textBox13 = new System.Windows.Forms.TextBox();
                
    this.button2 = new System.Windows.Forms.Button();
                
    this.panel1.SuspendLayout();
                
    this.SuspendLayout();
                
    // 
                // textBox1
                // 
                
    this.textBox1.Location = new System.Drawing.Point(10448);
                
    this.textBox1.Name "textBox1";
                
    this.textBox1.Size = new System.Drawing.Size(14420);
                
    this.textBox1.TabIndex 0;
                
    this.textBox1.Text "textBox1";
                
    // 
                // textBox2
                // 
                
    this.textBox2.Location = new System.Drawing.Point(8896);
                
    this.textBox2.Name "textBox2";
                
    this.textBox2.Size = new System.Drawing.Size(14420);
                
    this.textBox2.TabIndex 1;
                
    this.textBox2.Text "textBox2";
                
    // 
                // textBox3
                // 
                
    this.textBox3.Location = new System.Drawing.Point(2480);
                
    this.textBox3.Name "textBox3";
                
    this.textBox3.Size = new System.Drawing.Size(14420);
                
    this.textBox3.TabIndex 2;
                
    this.textBox3.Text "textBox3";
                
    // 
                // textBox4
                // 
                
    this.textBox4.Location = new System.Drawing.Point(90139);
                
    this.textBox4.Name "textBox4";
                
    this.textBox4.Size = new System.Drawing.Size(14420);
                
    this.textBox4.TabIndex 3;
                
    this.textBox4.Text "textBox4";
                
    // 
                // textBox5
                // 
                
    this.textBox5.Location = new System.Drawing.Point(-8176);
                
    this.textBox5.Name "textBox5";
                
    this.textBox5.Size = new System.Drawing.Size(14420);
                
    this.textBox5.TabIndex 4;
                
    this.textBox5.Text "textBox5";
                
    // 
                // textBox6
                // 
                
    this.textBox6.Location = new System.Drawing.Point(-8216);
                
    this.textBox6.Name "textBox6";
                
    this.textBox6.Size = new System.Drawing.Size(14420);
                
    this.textBox6.TabIndex 5;
                
    this.textBox6.Text "textBox6";
                
    // 
                // textBox7
                // 
                
    this.textBox7.Location = new System.Drawing.Point(114163);
                
    this.textBox7.Name "textBox7";
                
    this.textBox7.Size = new System.Drawing.Size(14420);
                
    this.textBox7.TabIndex 6;
                
    this.textBox7.Text "textBox7";
                
    // 
                // textBox8
                // 
                
    this.textBox8.Location = new System.Drawing.Point(122171);
                
    this.textBox8.Name "textBox8";
                
    this.textBox8.Size = new System.Drawing.Size(14420);
                
    this.textBox8.TabIndex 7;
                
    this.textBox8.Text "textBox8";
                
    // 
                // textBox9
                // 
                
    this.textBox9.Location = new System.Drawing.Point(130179);
                
    this.textBox9.Name "textBox9";
                
    this.textBox9.Size = new System.Drawing.Size(14420);
                
    this.textBox9.TabIndex 8;
                
    this.textBox9.Text "textBox9";
                
    // 
                // textBox10
                // 
                
    this.textBox10.Location = new System.Drawing.Point(152224);
                
    this.textBox10.Name "textBox10";
                
    this.textBox10.Size = new System.Drawing.Size(14420);
                
    this.textBox10.TabIndex 9;
                
    this.textBox10.Text "textBox10";
                
    // 
                // button1
                // 
                
    this.button1.Location = new System.Drawing.Point(6416);
                
    this.button1.Name "button1";
                
    this.button1.Size = new System.Drawing.Size(10416);
                
    this.button1.TabIndex 10;
                
    this.button1.Text "button1";
                
    this.button1.Click += new System.EventHandler(this.button1_Click);
                
    // 
                // panel1
                // 
                
    this.panel1.Controls.Add(this.textBox13);
                
    this.panel1.Controls.Add(this.textBox12);
                
    this.panel1.Controls.Add(this.textBox11);
                
    this.panel1.Location = new System.Drawing.Point(6480);
                
    this.panel1.Name "panel1";
                
    this.panel1.Size = new System.Drawing.Size(176152);
                
    this.panel1.TabIndex 11;
                
    this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
                
    // 
                // textBox11
                // 
                
    this.textBox11.Location = new System.Drawing.Point(1666);
                
    this.textBox11.Name "textBox11";
                
    this.textBox11.Size = new System.Drawing.Size(14420);
                
    this.textBox11.TabIndex 6;
                
    this.textBox11.Text "textBox11";
                
    // 
                // textBox12
                // 
                
    this.textBox12.Location = new System.Drawing.Point(40120);
                
    this.textBox12.Name "textBox12";
                
    this.textBox12.Size = new System.Drawing.Size(14420);
                
    this.textBox12.TabIndex 7;
                
    this.textBox12.Text "textBox12";
                
    // 
                // textBox13
                // 
                
    this.textBox13.Location = new System.Drawing.Point(248);
                
    this.textBox13.Name "textBox13";
                
    this.textBox13.Size = new System.Drawing.Size(14420);
                
    this.textBox13.TabIndex 8;
                
    this.textBox13.Text "textBox13";
                
    // 
                // button2
                // 
                
    this.button2.Location = new System.Drawing.Point(18416);
                
    this.button2.Name "button2";
                
    this.button2.Size = new System.Drawing.Size(10424);
                
    this.button2.TabIndex 12;
                
    this.button2.Text "button2";
                
    // 
                // Form1
                // 
                
    this.AutoScaleBaseSize = new System.Drawing.Size(513);
                
    this.ClientSize = new System.Drawing.Size(292266);
                
    this.Controls.Add(this.button2);
                
    this.Controls.Add(this.panel1);
                
    this.Controls.Add(this.button1);
                
    this.Controls.Add(this.textBox10);
                
    this.Controls.Add(this.textBox9);
                
    this.Controls.Add(this.textBox8);
                
    this.Controls.Add(this.textBox7);
                
    this.Controls.Add(this.textBox6);
                
    this.Controls.Add(this.textBox5);
                
    this.Controls.Add(this.textBox4);
                
    this.Controls.Add(this.textBox3);
                
    this.Controls.Add(this.textBox2);
                
    this.Controls.Add(this.textBox1);
                
    this.Name "Form1";
                
    this.Text "Form1";
                
    this.Load += new System.EventHandler(this.Form1_Load);
                
    this.panel1.ResumeLayout(false);
                
    this.ResumeLayout(false);

            }
            
    #endregion 
    Em thêm cả một button nữa, tuy rằng thằng này không có tâp hợp Controls nhưng khi truy nhập tới cũng chẳng báo lỗi. Nhưng chương trình của anh thì vẫn chạy đúng. Chẳng hiểu thế nào nữa.?

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà nội
    Bài viết
    77

    PHP Code:
    'code VB 
    Public Sub Xoa(Co as Byte,Frm as Form)
      Dim Ctr As Control
      For Each Ctr in Frm.Controls
        If Ctr.Tag=Co then Ctr.Text=""
      Next
    End Sub 

    ko biết C# có thuộc tính .Tag ko và công dụng của nó có giống với .Tag trong VB ko,nhưng nếu sử dụng .Tag để phân biệt các Controls thì bạn có thể thao tác bất kì lệnh nào,hoặc xử lý bất kì tình huống nào liên quan đến Control đó chứ ko chỉ Xóa nội dung text
    Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN

  9. #9
    Ngày gia nhập
    02 2011
    Bài viết
    18

    hay quá đúng cái mình cần ! thanks nhìu nha )

  10. #10
    Ngày gia nhập
    05 2015
    Bài viết
    1

    cho mình hỏi nếu mình muốn xóa nội dung ở 1 số textbox hay label thoy thì làm sao để nó chừa ra, cái vòng foreach đó sửa lại thế nào mong nhận được ý kiến của các bạn, mình xin cám ơn

Các đề tài tương tự

  1. Xử lý tất cả các control trên form trong lập trình C#
    Gửi bởi baokhanhk28 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 20-01-2013, 04:04 PM
  2. Lập trình C Xóa các dấu cách trên các dòng trong file text!
    Gửi bởi thinhnh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 13-11-2012, 06:55 PM
  3. Graphic Cách xóa bỏ boder mặc định cho form khi dùng dotnetbar ribbon control
    Gửi bởi phanquyet89 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 04-05-2012, 07:45 PM
  4. Graphic xuất user control thành ma trận các control trên form C#?
    Gửi bởi thinhmiss trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 04-05-2012, 04:11 PM
  5. điều khiển các Control giữa các form(MDI qua cac Form con)
    Gửi bởi tinhdoncoi902 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 14-07-2011, 12:02 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn