2009-08-29 17 views
19

Herhangi bir UI veya kapsayıcıyı WinForms'a eklediğimizde, daha önce eklenen bileşen daha önce eklenen bileşenlerin üzerine gelir, daha yüksek bir katmanda olduğunu söyleyebiliriz.WinForm UI bileşenleri katman sırası

Bileşen ekledikten sonra bu katman siparişi veya bileşen siparişi nasıl değiştirilir?

cevap

27

Bileşenleri dinamik olarak kodda mı yoksa tasarımcıda mı yüklediğinizi mi? Tasarımcıda varsa Biçim -> Sipariş -> Arkaya Gönder ve Biçim -> Sipariş -> Ön Getir komutları. Geri Dön ve Ön Getir, bir denetimin yanı sıra form tasarımcısında çalışırken görünmesi gereken "Düzen" araç çubuğunda sağ tıklattığınızda, içerik menüsünde de kullanılabilir.

30

Aynı yerde birden fazla denetim yerleştirdiğinizde, biri üstte, diğeri ise altta sona erer. Genellikle bu, bağlama ve yerleştirme özelliklerini hatalı kullanma gibi küçük bir hatanın sonucudur. yeniden boyutlandırılabilir form oluşturmak için.Ancak bazı durumlarda, belirli bir etki için denetimi üst üste getirmek isteyebilirsiniz.

Denetim üst üste geldiğinde, hangi denetimin üstte bittiğini belirleyen z-dizini var.Öncelikle, her denetim kendi ayrı numaralandırılmış katmanında bulunur.Z-indeks katmanına 1 sahip olan bir denetim, bir denetimin üstünde görünür. z-index katmanı 2 üst üste binerlerse. Bir grup kontrolün z-endeksi, kontrolleri eklediğiniz sıraya göre belirlenir, böylece eklediğiniz son kontrol daima en üstteki katmandadır (bir z ile) 0 indeksi). Ancak bu seçenekleri değiştirebilirsiniz.

Bir denetimin z-endeksini belirlemek veya ayarlamak için, Controls Collection öğesinin GetChildIndex() ve SetChildIndex() yöntemlerini kullanabilirsiniz. Bunun bir denetimi z-dizinindeki üçüncü katmana taşıyan bir örnektir.

Controls.SetChildIndex(ctrl, 2); 

Genellikle, bulmak taneli control.Instead bu tür gerekmez, sadece Z dizini arkasına bir control (en alt katman) damla veya getirmek isteyeceksiniz Bu özelliği, bir kontrol üzerine sağ tıklayıp Fron'a Getir'i veya Back to Send'i seçerek tasarım zamanında bu özelliği gerçekleştirebilirsiniz. Aynı görevi Control.BringToFront() veya Control.SendToBack() yöntemlerini kullanarak programsal olarak da gerçekleştirebilirsiniz.

ctrl.BringToFront(); // This is equivalent to Controls.SetChildIndex(ctrl,0); 
+0

Yararlı buldum. Ayrıca, kontrolün üstünde olduğu çalışma zamanında GetChildIndex'i bulmuştur. Teşekkürler. –

11

Tasarım görünümünde, geçerli formunuzun/kontrolünüzün bir ağaç yapısını görüntülemek için "Belge Dış Çizgisi" panelini açabilir ve ardından bileşenleri öne, "yukarı" ve "aşağı" sürükleyerek öne geri ve ayrıca konteynerlerin içine ve dışına.

+1

Görünüm> DiğerDindowslar> DocumentOutline veya kısayolunu kullanma Ctrl + W, U –