2013-03-05 19 views
5

Xem trường hợp của tôi là,Tìm nhiều nhất kiểm soát (z-order) hàng đầu trong một bảng điều khiển

Tôi mở nhiều hơn một forms (toplevel=false) bên trong một panel. Tất cả các forms được mở bên trong đó panel sẽ là dock filledbrought to front trong thời gian chạy. và nhu cầu của tôi trong tình huống này là, làm cách nào tôi có thể chọn kiểm soát nhiều nhất (form) trên số panel đó. Kiểm soát nhiều nhất có nghĩa là kiểm soát (form) có số lượng lớn hơn z-order.

Tôi hiện đang sử dụng mã này bằng cách giả định,

panel.controls(0) 

thể bất kỳ cơ thể cho tôi biết, cho dù đoạn mã trên là đúng hay bất kỳ cú pháp thay thế có sẵn trong dot net để đạt được điều đó.?

Trả lời

5

Theo MSDN:

Việc kiểm soát với một giá trị chỉ số zero là ở phía trên cùng của z-trật tự, và số càng cao càng gần gũi hơn với đáy.

Vì vậy, tôi muốn nói giả định của bạn là chính xác. Controls(0) sẽ luôn là kiểm soát cao nhất. Mối quan tâm duy nhất là liệu nó có hiển thị hay không.

1

Tôi không thấy bất kỳ giải pháp nào khác lặp qua từng Kiểm soát và xem giải pháp nào là trên cùng. Cái gì như:

Dim TopMostControl As Control = panel.Controls(0) 'Check if there are any control 
For Each Control As Control In panel.Controls 
    If panel.Controls.GetChildIndex(Control) < panel.Controls.GetChildIndex(TopMostControl) Then 
     TopMostControl = Control 
    End If 
Next 
Các vấn đề liên quan