2010-07-21 9 views
6

KullanıcıControl'ün başkalarının önünde olup olmadığını nasıl kontrol edersiniz? Bunu yapmanın kolay yolu var mı? Kullanıcı denetimime tıklandığında bringToFront yöntemini kullanıyorum, ancak şimdi ön tarafta olup olmadığını belirlemem gerekiyor. Z-Index en üst kontrol olduğunuBir userControl C# içinde başkalarının önünde olup olmadığını nasıl kontrol edilir?

private bool IsControlAtFront(Control control) 
{ 
    return control.Parent.Controls.GetChildIndex(control) == 0; 
} 

Uyarı:

cevap

7

sadece sadece aşağıdakileri yapın bir üst koleksiyonundan önünde olduğunu kontrol eden bilmek istiyorsanız sayı ne kadar yüksekse, alt hiyerarşide aşağı doğrudur. Ayrıca, yukarıdaki bu kod şu anda yalnızca bir ebeveynin içinde bir Kontrol için çalışacaktır. Ayrıca ebeveynin z-endeksi 0'da da yinelemeli olarak kontrol edilmesi gerekecektir.

Bu her yerde Form içinde herhangi Kontrolü için çalışacak:

private bool IsControlAtFront(Control control) 
{ 
    while (control.Parent != null) 
    { 
     if (control.Parent.Controls.GetChildIndex(control) == 0) 
     { 
      control = control.Parent; 
      if (control.Parent == null) 
      { 
       return true; 
      } 
     } 
     else 
     { 
      return false; 
     } 
    } 
    return false; 
} 
İlgili konular