2014-01-21 42 views
0

我有多種形式,並且想知道是否將面板添加到窗體,將其他窗體複製到主窗體並顯示是否是一種好的做法。例如,我可以有Form1,Form2,Form3和Form4。然後,我將刪除Form2和Form3 - 事先將這些元素複製到Form1中的2個新面板中,然後使用位置,可見性和大小在不同的「視圖」之間切換。將幾種形式縮減爲1種形式。好的或不好的做法?

我創建下面使用相同的方面的真實例子:

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.Width = 385; 
    this.Height = 243; 
} 

private void ButtonSearch_Click(object sender, EventArgs e) 
{ 
    this.Width = 541; 
    this.Height = 226; 

    panelSearch.Visible = false; 
    panelFileInfo.Visible = true; 
    panelFileInfo.Location = new System.Drawing.Point(0, 2); 
    label4.Text = textBox1.Text; 
} 

private void labelSearchAgain_Click(object sender, EventArgs e) 
{ 
    this.Width = 385; 
    this.Height = 243; 

    textBox1.Text = string.Empty; 
    checkBox1.Checked = false; 
    checkBox2.Checked = false; 
    panelSearch.Visible = true; 
} 
+0

這聽起來像是你放在codereview,但沒有任何代碼,這也使得它在這裏無效。它不屬於UX,因爲它顯然是一個關於編碼最佳實踐的問題......我不知所措。 – Magus

+0

我從來沒有聽說過。這不是無效的,怎麼樣?我只是簡單地創建了表單和兩個面板,然後製作了前景的截圖。在Form1.cs中,代碼是默認的...我沒有添加任何代碼明智的,因爲我剛剛使用了這些工具。那麼爲什麼我應該在創建新表單時上傳一些已經默認的代碼?這只是一個簡單的例子來展示面板的使用。 – lornasw

+0

這就是StackOverflow的要點嗎?當他們的代碼出現問題時,人們來到這裏,而通常沒有代碼的問題不是SO的領域。這在這裏可能是一個有效的問題,但如果是這樣的話,那就相當接近了。 – Magus

回答

2

我傾向於組件化創建自定義組件/ usercontrols聚合2或3控件。然後我在這些新組件上工作,使它們具有高度可重用性(至少在同一個項目中),並具有設計時間支持,等等......

我建議您嘗試在控件中轉換您的窗體,然後拖放您的主要形式的自定義控件

+0

這很棒,但我不認爲我可以使用UserControls ...在我的項目中,我可以改變語言從一個21的選擇:/所以我不會重新使用這將工作...但將爲未來的項目記住這一點!你睜開眼睛! – lornasw

+0

UserControls支持多語言以及Forms do。這是非常簡單的GUI任務。 – sam

+0

太好了,我會這麼做的。 – lornasw

1

好了,我們已經有了一個遺留代碼很多在工作中如果有人做你想正是做。他們將十幾種不同的表格合併爲一個巨大的表格,並且每個表格都是動態顯示/隱藏,移動和操作的面板。

它已經成爲維修噩夢!

保留根據其功能分開的窗體。給他們好的描述性名字。如果你剛剛開始一個項目,你可能會考慮把你的努力學習WPF,因爲它是WinForms的自然繼承者。

這一切都是基於我當然認爲,但它也是基於5年經驗的維護一些意大利麪條代碼,我建議你儘量避免它。

+0

我也建議反對。在Winforms中,它應該變得非常快速。 WPF結合了一個好的工具包,比如Caliburn..Micro將是一個可維護的適合這個問題。# –