2016-03-30 14 views
-1

Winforms uygulamasında bir TabControl var ve sekme sayfalarından birinde, sayfada veri eksikliklerini bildirmek için kullandığım bir etiket var. Eksiklikler giderildiğinde, etiketi gizlerim ve verilerin geçerli olduğunu belirten başka bir etiket yerine görünür hale gelirim.Bir sekme sayfasındaki denetimlerin görünürlüğü nasıl değiştirilir

Sorun, kullanıcı başka bir sekmeye geçtiğinde, geri geldiğinde, her iki etiket de görünür durumdadır. Sorun, kullanıcı sekmeyi seçtiğinde çeşitli öğeleri yeniden yapılandırmam gerektiğidir ve bunu yaptığım noktada denetimlerin görünürlüğünü değiştirmenin hiçbir etkisi yoktur, tahmin ettiğim şey, tablanın henüz görünür olmadığıdır. Bunu TabControl'ün Selected etkinliğinde ve sekme sayfasının Enter olayında yapmaya çalıştım ama ikisi de işe yaramadı.

Uygun bir olayı araştırdım - sekme sayfasının görünmesinden sonra, ancak kullanıcıya gösterilmeden önce (veya görüntülendikten hemen sonra), ancak bir tane bulamadı.

Sekme sayfasında denetimlerin görünürlüğünü ayarlamak için uygun olan bir olay var mı? Veya sekme görüntülenmeden önce görünürlük ayarlama başka bir yöntem var mı?

+1

sorunu yeniden için basit bir kod gönderin. –

+0

@RezaAghaei - basit bir kodu test ettiğimde, bunu yapmadı. Sanırım karmaşık uygulamadaki sebebi ayırmam gerek. –

+0

Sorunu yeniden oluşturmak için basit bir kod oluşturmanın ilk yararı tam size göre. Genellikle problemi kendiniz bulmanıza ya da sizi doğru yönde hareket ettirmenize ya da en azından sizi yanlış yönlerden uzak tutmanıza yardımcı olur. Bundan sonra sorun basit kodda mevcutsa, kod diğer kullanıcıların size yardımcı olması için iyi bir başlangıç ​​noktası olacaktır :) –

cevap

0

sorun ilk olumsuzlaması olmak sonra diğer ayarı işlev çağrısı ile etiketlerden birinde görünürlüğünü ayarlama olduğunu ortaya çıktı:

label1.Visible = IsValid(); 
label2.Visible = !label1.Visible; 

Ama başına this answer, label1.Visible görünürlük ayarını yalnızca label1 üzerinde değil, label1 ve ebeveynlerinin en düşük görünürlüğü haline getirmez. Sekme görünmediğinden, IsValid() öğesi true olduğunda, label1.Visible öğesi dahili olarak doğru olarak ayarlanmış, ancak yine de yanlış döndürülmüştür. Yani label2.Visible da doğru olarak ayarlandı. Sekme gösterildikten sonra, görünürlük iç değerlerine geri döndü ve her iki etiket de gösterildi.

çözüm

bir değişkendeki değeri saklamak için oldu:

bool IsGood = IsValid(); 
label1.Visible = IsGood; 
label2.Visible = !IsGood; 
İlgili konular