2016-04-09 19 views
0

Uygulama yapılandırma ayarlarını görüntülemek için bir seri etiket kullanan bir windows form uygulamasına sahibim. Bu formdan, özellik ızgarası kullanan yapılandırma düzenleyicisidir. Ebeveyni gizle, Çocuğu göster, Yapılandırmayı Değiştir, Kaydet, çocuğu kapat, ebeveyni göster, ebeveyni yenile yapılandırmayı yeniden yüklemez.Form gösterimi yenilendi

Yeni bir form oluşturduğum bir şeyi hackledim ama bunun kötü bir uygulama olduğunu biliyorum ve görünmez bir asılı süreç bırakıyor.

Sorum şu: Ana formun yeni bir örneğini oluşturmadan, alt öğe formunda kaydedilen değişikliklerin ardından üst formdaki tüm etiketleri nasıl güncelleyebilirim?

Bir meslektaşım bunu kolaylaştırdı, diyor MainForm_onload. Dün gece tecrübeli bir kodlayıcıyla geçirdim, ama dibe batmaya çalışıyordu, ama asla windows formlarıyla çalışmadı, bu yüzden bunu çözemedik.

Teşekkürler! ~ D

+0

Ayarları kaydederken bir etkinliği tetikleyin. Ana form olayı aldığında, etiketleri güncelleyin. Ancak, üst formdaki ayarları ilk örnekte görüntülediğinizde, etiketleri yenilemek için bunu tekrar yapın. Label.Text'e yeni bir değer atarsanız, bu etiket güncellenir. –

+0

Dün gece böyle bir şey yap, olayın tamamı yeniden doldurmayı hedeflediler. Bu yüzden, onları yeniden yerleştirmek için etiketlere ihtiyaç var mı? Onlardan yaklaşık otuz var, ve onlar MainForm_onload'da yer alıyorlar (orada başka bir şey yok) ve bu yüzden bu kontrolü tekrar kontrol etmeyi umuyordum? –

+0

Tüm etiketleri ayarlayan bir yönteme sahip olmanız yeterlidir, ardından etkinliği aldığınızda etiketleri güncellemek için bu yöntemi bir kez arayabilirsiniz. –

cevap

0

Sorun, app.config dosyasındaki verileri etiketlere nasıl ayırdığınızla ilgili olabilir. Sanırım ConfigurationManager kullanıyorsunuz, belki de tek yapmanız gereken ilk defa yaptığınız gibi tekrar okumak.

+0

Hepsi MainForm_onload'da okunuyor, bu yüzden ya bunu ya da alternatif olarak ConfigurationManager.RefreshSection ("appSettings") gibi bir şeyi yeniden tetikleyebilmek istiyorum; –

+0

Ama dün gece RefreshSection'u denedik, top oynamadık (form.Refresh, değişiklikleri almak için yeterli değilse ve etiketleri tek tek yenilemeye gerek yok mu?) –

+0

İkinci formu kapattığınızda, düzenlemeler kaydedildikten sonra app.config dosyası, tekrar oku. Ana form yükünde aradığınız aynı şeyleri arayın, ayrı bir yönteme (veya sınıfa) ayıklayın ve diğer pencereden çağrı yapın. – Ralph

0

Parametreleri alt formuna iletir misiniz? Eğer öyleyse çocuğunuza bir delegeyi func<T,TResult>() iletin. Kaydedildiği zaman, işlevi çağırırsınız ve üst öğenizde değişkenlerinizi güncellemek için uygular.

Daha sonra yeni değerleri sonuç olarak gönderebilirsiniz, böylece daha sonra tekrar bakmanıza gerek kalmaz.

+0

Çalışmanın yeniden yazılması gerektiğine inanıyorum, bir üçüncü taraf yapılandırma düzenleyicisi (alt form) kullanıyorum ve tek başına çalıştırmayı planladım, yalnızca bir tıklama olayından çağırıyorsunuz –