2014-03-13 46 views
0

我有一個由許多不同的Windows窗體應用程序組成的應用程序。本質上,我試圖實現一個名爲ControlTheme的類,它可以控制整個應用程序的配色方案。當我在設置中更改顏色方案時,我希望所有當前打開的表單都可以重新加載並更改顏色,而無需重新啓動整個應用程序。有誰知道如何做到這一點?在Windows窗體應用程序中重新加載未聚焦的窗體以進行顯示更改。

我在每個表單中都有一個名爲Prep()的方法,它收集父類ControlTheme (this.ButtonColor = ControlTheme.ButtonColor)的所有顏色信息,但即使此方法是公開的,我也無法從「設置」頁面訪問它。

+0

'我試圖實現一個名爲ControlTheme的類 - 不要試圖重新發明輪子。 winforms不支持主題。使用WPF。 –

回答

0

創建一個適用於每個包含Prep()方法的表單的接口。

interface IThemable 
{ 
    void Prep(); 
} 

然後使用Application.OpenWindows告訴你當前在你的應用程序中打開的所有窗口。

public void UpdateAllOpenWindows() 
{ 
    foreach (var themableForm in Application.OpenForms.OfType<IThemable>()) 
    { 
     themableForm.Prep(); 
    } 
} 
+0

這很有道理。我設法通過簡單地舉辦一個活動來實現它,並在之前的表單中添加代表來傾聽它。 – Dougyfresh

相關問題