2010-11-18 43 views
1

我正在開發一個程序,該程序要求用戶選擇他/她希望打開的文件。在C中更改表單佈局#

大約有3種不同的文件可供選擇,並且每個文件都會影響按鈕的佈局以及它們的一些屬性。

的問題是,在現階段,我有這個巨大的名單:

label1.Visible = false; 
label2.Visible = false; 
form.size = etc. 

每個文件影響到大約16個不同的控制,所以這是一個總的48可能發生的變化。

有沒有更快/更好的方式來組織你的程序的佈局?

預先感謝您。

框架:3.5 語言:C#

Windows窗體應用程序

回答

5

我會建議他們分組到面板,然後切換面板上的知名度來代替。

+0

偉大的想法,應該想到的..我會標記這是答案,謝謝。 – Nick 2010-11-18 15:21:57

2

如果您使用WPF構建應用程序,則可以使用Visual State Manager爲窗口定義自定義狀態,並根據狀態設置控件的可見性。或者,您可以將控件上的可見性屬性綁定到ViewModel上的屬性。

爲了將來的參考,C#是語言;您需要指定您的應用程序使用的是哪個框架。

+0

添加了信息,謝謝你的指針。 – Nick 2010-11-18 15:24:01

+0

我的意思是你需要指定你正在使用的Windows應用程序框架:WPF,Silverlight或Windows窗體。 – 2010-11-20 11:14:27

1

布蘭登建議使用面板進行分組,這可能是一個合理的解決方案,如果您的16個控件放在一個矩形區域中。另一種分組形式可以通過給一組控件合理的名稱並在運行時通過它們的名稱訪問它們來實現。

我會假設您使用的是Windows窗體。例如,而不是像這樣

label_1_1.Visible = false; 
label_1_2.Visible = false; 
//... 
label_1_16.Visible = false; 

16行代碼將此功能添加到您的形式

Control FindControl(string name) 
{ 
    foreach (Control c in this.Controls) 
    { 
     if (c.Name == name) 
     { 
       return c; 
     } 
    } 
    return null; 
} 

,並使用這種方式:

for(int i=1;i<=16++i) 
    ((Label)FindControl("label_1_" + i)).Visible=false; 

(你應該添加一些錯誤檢查當然)

+0

這是一個非常好的主意,我會嘗試他們看看我想用什麼。謝謝。 – Nick 2010-11-19 07:14:42

0

我會把每個佈局放在它自己的Placeholder控件中(將所有的佈局設置爲invisib在標記中)並添加一些邏輯來顯示你想要的。

(假設你在談論webforms)。