2010-10-10 19 views

Trả lời

75

Sử dụng Control.ControlCollection.Find.

TextBox tbx = this.Controls.Find("textBox1", true).FirstOrDefault() as TextBox; 
tbx.Text = "found!"; 

EDIT cho hỏi:

Control[] tbxs = this.Controls.Find(txtbox_and_message[0,0], true); 
if (tbxs != null && tbxs.Length > 0) 
{ 
    tbxs[0].Text = "Found!"; 
} 
+0

TextBox tBox = this.Controls.Find (txtbox_and_message [0, 0], true) .FirstOrDefault() dưới dạng TextBox; Là nó ổn? –

+0

Nhận lỗi này .. .net framework 2.0 .. 'System.Array' không chứa định nghĩa cho 'FirstOrDefault' và không có phương pháp mở rộng 'FirstOrDefault' chấp nhận đối số đầu tiên của loại 'System.Array' có thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc tham chiếu lắp ráp?) –

+0

Bạn có đang tự động thêm hộp văn bản vào biểu mẫu của mình trong thời gian chạy không? Trong trường hợp này, bạn có thể gán một tên duy nhất cho mỗi hộp văn bản và sử dụng controls.find để tìm hộp văn bản có tên duy nhất của nó. – bla

10

Bạn có thể sử dụng:

f.Controls[name]; 

đâu f có thể thay đổi hình thức của bạn. Điều đó cung cấp cho bạn quyền kiểm soát với tên name.

+5

Lưu ý rằng điều này không hoạt động nếu kiểm soát được lồng (bạn sẽ chỉ tìm thấy điều khiển hiện tại ở cấp độ đó trong hệ thống phân cấp điều khiển). –

+0

@Michael: Đúng vậy. – CesarGon

3
TextBox tbx = this.Controls.Find("textBox1", true).FirstOrDefault() as TextBox; 
tbx.Text = "found!"; 

Nếu Controls.Find không tìm thấy "TextBox1" => lỗi. Bạn phải thêm mã.

If(tbx != null) 

Edit:

TextBox tbx = this.Controls.Find("textBox1", true).FirstOrDefault() as TextBox; 
If(tbx != null) 
    tbx.Text = "found!"; 
Các vấn đề liên quan