2012-02-19 52 views
5

Tôi có vài TabPages và mỗi tab có chứa hộp văn bản đa dạng thức. Tôi làm cách nào để truy cập richtechbox trên tab đã chọn?Làm cách nào để lấy (các) điều khiển từ TabPage trong C#?

TabPage selectedTab = tabControl.SelectedTab; 
RichTextBox selectedRtb = selectedTab.Controls.Find("rtb", true).First() as RichTextBox; 

Đây là những gì tôi đã thử nhưng không may mắn.

Added:

Đây là cách tabpage được bổ sung với điều khiển richtextbox

TabPage newTab = new TabPage(name); 
RichTextBox rtb = new RichTextBox(); 
rtb.Dock = DockStyle.Fill; 
rtb.BorderStyle = BorderStyle.None; 
rtb.Text = file.Data; 
newTab.Controls.Add(rtb); 
tabControl.TabPages.Add(newTab); 
tabControl.SelectedTab = newTab; 
+0

bài viết mã mà thêm sự kiểm soát để các tab. –

+0

Tên biến không liên quan. Bạn quên đặt thuộc tính Tên. –

Trả lời

9

Nếu đây là WinForms, nó sẽ chỉ được:

if (selectedTab.Controls.ContainsKey("rtb")) 
    RichTextBox selectedRtb = (RichTextBox)selectedTab.Controls["rtb"]; 

nếu rtb là tên kiểm soát RichTextBox.

Khi tạo kiểm soát của bạn, thêm tên với nó:

RichTextBox rtb = new RichTextBox(); 
rtb.Name = "rtb"; 
3

Lý do cách tiếp cận của bạn không hoạt động là bởi vì bạn đang cố gắng để tìm thấy nó bằng cách sử dụng bất động sản tên của kiểm soát.

Nhìn vào mã của bạn, bạn không đặt thuộc tính Name. Nếu bạn có thể tạo một tên đã biết trước thời hạn, bạn có thể sử dụng tên đó khi tìm kiếm điều khiển.

Bạn cũng có thể thử điều này:

var rtb = tabControl.SelectedTab.Controls.Cast<Control>() 
           .FirstOrDefault(x => x is RichTextBox); 
Các vấn đề liên quan