2013-03-05 10 views
5

Zobacz mój przypadek jestZnalezienie najlepsze najbardziej (z rzędu) w panelu sterowania

ja otwarcie więcej niż jednego forms (toplevel=false) wewnątrz panel. Wszystkie forms otwarte wewnątrz tego panel będą dock filled i brought to front podczas wykonywania. i moja potrzeba w tej sytuacji jest taka, jak mogę wybrać najwyższą kontrolę (form) na tej panel. Najwyższa kontrola oznacza kontrolę (form), która ma większą wartość z-order.

Obecnie używam tego kodu z założenia,

panel.controls(0) 

Czy każdy podmiot powiedz mi, czy powyższy fragment jest prawo lub jakikolwiek alternatywny składnia dostępny w dot net, aby to osiągnąć.?

Odpowiedz

5

Według MSDN:

Sterowanie z wartością indeksu od zera jest w górnej części z-zlecenia, a wyższe numery są bliżej dna.

Dlatego powiedziałbym, że twoje założenie było prawidłowe. Controls(0) zawsze będzie najwyższą kontrolą. Jedynym problemem będzie to, czy jest on widoczny, czy nie.

1

Nie widzę żadnego innego rozwiązania z zapętlaniem się każdej Kontroli i sprawdzenia, która jest najwyższa. Coś jak:

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 
Powiązane problemy