2011-03-19 15 views
10

Bir WinForms uygulamasına sahibim ve içinde büyük bir Panel var. Ve bu panelin içinde ikinci bir küçük panel de dahil olmak üzere bir sürü şey var.Alt paneli devre dışı bırakarak alt paneli etkin tutuyorken

Belirli bir olay meydana geldiğinde, büyük panelin Enabled = false olmasını istiyorum ve yine de minik panelin Etkin olmasını istiyorum. Bunu yapabilir miyim? Büyük paneli devre dışı bıraktıktan sonra küçük paneli yeniden etkinleştirmeyi denedim, ancak hiçbir işe yaramadı.

Ya da, küçük panelin "üstte" olduğu, ancak büyük panelin "içine" girmeyeceği şekilde nasıl yapabilirim?

Ben bir tahminde aldı ve çalıştı:

tinyPanel.Parent = null; 

ve tinyPanel.Parent = this;

Ama sadece yok tinyPanel yapar.

cevap

14

Hayır, bu mümkün değil.Tüm çocuk denetimleri, ebeveynleri devre dışı bırakıldığında devre dışı bırakılır. Windows nasıl çalışır? onu değiştiremezsin.

Sorununuzu çözmenin farklı bir yolunu bulmanız gerekiyor. denetimini yeniden ebeveynleştirmek seçeneğidir, ancak bunu yapmaya çalıştığınız yöntem yanlıştır. "Büyük Panel" için Controls collection'dan kaldırmanız ve formunuz için Controls koleksiyonuna eklemeniz gerekir. Daha sonra her iki kontrolün etkin durumunu bağımsız olarak değiştirebileceksiniz.

+0

Teşekkürler @Cody :) –

0

Ebeveyn denetimi devre dışıyken bir kontrol etkin hale getirilebileceğini düşünmüyorum.

+0

Hmmm ... Yani, belki de minPanel'in z sırasını değiştirirsem işe yarayabilir? Yoksa hayal gücümü çok fazla kullanıyorum –

+2

Z emrinin ana kontrollerle ilgisi yok. Ortogonal özellikler. –

+0

@Cody Grey: Muhtemelen haklısınız, sanırım berbat ettim ve alet çubukları gibi kenetlenmiş kontrollerin sırasını karıştırdım. Cevabımı şimdi tamir – Dyppl