2012-05-23 48 views
5

Để xóa hộp văn bản của tôi, tôi đã sử dụng đoạn mã sau trong một hình thức:Kiểm tra nếu kiểm soát là Textbox trong TabControl

foreach (Control c in this.Controls) 
{ 
    if (c is TextBox || c is RichTextBox) 
    { 
     c.Text = ""; 
    } 
} 

Nhưng bây giờ hộp văn bản của tôi cư trú trong một TabControl. Làm thế nào tôi có thể chạy cùng loại kiểm tra này cho các hộp văn bản và nếu điều khiển là một hộp văn bản, hãy đặt giá trị thành "". Tôi đã thử sử dụng:

foreach(Control c in tabControl1.Controls) 

Nhưng điều này không hiệu quả.

Trả lời

11

sử dụng này

foreach (TabPage t in tabControl1.TabPages) 
{ 
    foreach (Control c in t.Controls) 
    { 
     if (c is TextBox || c is RichTextBox) 
     { 
      c.Text = ""; 
     } 
    } 
} 
1

tabControl1.Control sẽ không hoạt động vì điều khiển tab chứa TabPage s. Bạn cần nhắm mục tiêu trang chính xác.

Hoặc bạn có thể xây dựng một phương pháp đệ quy để làm điều đó:

static void RecurseClearAllTextBoxes(Control parent) 
{ 
    foreach (Control control in parent.Controls) 
    { 
     if (control is TextBox || control is RichTextBox) 
      control.Text = String.Empty; 
     else 
      RecurseClearAllTextBoxes(control); 
    } 

    if (parent is TabControl) 
    { 
     foreach (TabPage tabPage in ((TabControl)parent).TabPages) 
      RecurseClearAllTextBoxes(tabPage); 
    } 
} 
5

Bạn cũng có thể sử dụng Enumerable.OfType. TextBoxRichTextBox là các điều khiển duy nhất mà kế thừa từ TextBoxBase, đây là loại mà bạn đang tìm kiếm:

var allTextControls = tabControl1.TabPages.Cast<TabPage>() 
    .SelectMany(tp => tp.Controls.OfType<TextBoxBase>()); 
foreach (var c in allTextControls) 
    c.Text = ""; 
1

Limpiar Controles

 foreach (Control C in GB.Controls) 
     { 
      if(C is TextBox) 
      { 
       (C as TextBox).Clear(); 
      } 
      if(C is DateTimePicker) 
      { 
       (C as DateTimePicker).Value = DateTime.Now; 
      } 
      if (C is ComboBox) 
      { 
       (C as ComboBox).SelectedIndex = 0; 
      } 
     } 
Các vấn đề liên quan