2016-04-09 64 views
0

我有一個Windows窗體應用程序,它使用一系列標籤來顯示應用程序配置設置。從這個表單中我打開了一個表單,它是使用屬性網格的配置編輯器。隱藏父級,顯示子級,修改配置,保存,關閉子級,顯示父級,刷新父級不重新加載配置。在窗體上刷新配置顯示

我在一起創建了一個新表單,但我知道這是不好的做法,並留下一個看不見的掛起的過程。

我的問題是,如何在父表單上更新父表單上的所有標籤,而不必創建父表單的新實例時更改保存在子表單中的所有標籤?

一位同事讓聽起來很簡單,他說他稱MainForm_onload。我昨晚花了幾個小時與一位經驗豐富的編程人員一起努力探索它的底部,但他從來沒有使用Windows窗體,所以我們無法弄清楚。

謝謝! 〜D

+0

保存設置時觸發事件。當父表單收到事件時,更新標籤。或者,您在第一個實例中顯示了父窗體中的設置,請再次執行此操作以刷新標籤。如果您爲Label.Text分配一個新值,則會更新該標籤。 –

+0

昨晚特里發生了這樣的事情,除了旨在重新加載整個表單的事件。所以他們自己的標籤需要重新設置,然後我拿它?其中大約有三十個,他們在MainForm_onload上設置(沒有其他事情發生在那裏),所以我希望只是重新檢查該檢查? –

+0

只需設置一個設置所有標籤的方法,然後當您收到事件時,只需調用一次該方法即可更新標籤。 –

回答

0

問題可能出在您如何解析數據從app.config到標籤。我猜你正在使用ConfigurationManager,所以你所要做的就是再讀一次,就像你第一次做的一樣。

+0

它們都在MainForm_onload上讀取,所以我要麼能夠重新觸發它,要麼像ConfigurationManager.RefreshSection(「appSettings」); –

+0

但是我們昨天嘗試了RefreshSection,它沒有打球(除非form.Refresh不足以接收更改,我需要單獨刷新標籤?) –

+0

當您關閉第二個窗體時,編輯保存在app.config文件,再次閱讀。調用您在主窗體加載時調用的相同內容,將其提取到單獨的方法(或類),並從另一個窗口調用。 – Ralph

0

您可以將參數傳遞給子窗體。如果通過代理func<T,TResult>()給你的孩子。當它保存時,調用該函數並在你的父項中實現它來更新你的變量。

你甚至可以發送新的值作爲結果,所以你不需要再看看它們。

+0

我認爲這將需要重寫工作,我正在使用第三方配置編輯器(子窗體),它的目的是作爲一個獨立的運行,你只需從一個單擊事件調用它 –