2012-01-08 81 views
1

我有一個有兩個視圖的窗體。這些視圖由表單頂部的單選按鈕控制。切換面板可見性在堆疊時不工作

下面是程序:

http://dl.dropbox.com/u/41629841/DataCalculator/DataCalc1.PNG

注意如何對數轉換器的單選按鈕被選中。

這裏是個什麼樣子,當你選擇文本轉換器單選按鈕,如:

http://dl.dropbox.com/u/41629841/DataCalculator/DataCalc2.PNG

這是不對的。我將它設置爲隱藏包含數字轉換器的面板,並在單擊該面板時顯示包含文本轉換器的面板。它隱藏了數字轉換器,但不顯示文本轉換器。

這裏是文本轉換器面板的畫面:

http://dl.dropbox.com/u/41629841/DataCalculator/DataCalc4.PNG

下面是相關代碼:

Private Sub frmCalculator_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    rdoNumberConverter.Checked = True 
End Sub 

Private Sub rdoTextConverter_Click(sender As Object, e As System.EventArgs) Handles rdoTextConverter.Click 
    pnlTextConverter.Visible = True 
    pnlNumberConverter.Visible = False 
End Sub 

Private Sub rdoNumberConverter_Click(sender As Object, e As System.EventArgs) Handles rdoNumberConverter.Click 
    pnlNumberConverter.Visible = True 
    pnlTextConverter.Visible = False 
End Sub 

一切似乎正確的,我想不通爲什麼文本轉換器沒有出現。我已經確定它與兩個面板彼此重合的事實有關,因爲當我將它們分開時,可見性切換完美地起作用。

下面是支持圖片:

http://dl.dropbox.com/u/41629841/DataCalculator/DataCalc5.PNG http://dl.dropbox.com/u/41629841/DataCalculator/DataCalc6.PNG

所以我怎麼做時,他們在彼此的頂部工作的呢?

我嘗試使用BringToFront()和SendToBack()來確保可見面板位於前面,並且它沒有區別。

回答

4

確保TextConverter面板不在「NumberConverter」面板的「內部」。

從設計師,將他們移動到不同的地方,使他們根本不重疊。

然後在代碼中,它們移動到的地方:

textConverterPanel.Location = numConvertPanel.Location 

你可見,不可見的反覆應該工作即可。

+0

Ahhhh很好,我沒有想到這一點。我相信這會有效 – 2012-01-08 21:14:41

0

正如@LarsTech指出的那樣,問題在於嵌入式面板。如果使用GUI將它們移動到相同的位置,就會發生這種情況。

如果您想在設計時重疊它們,請在另一個位置創建第二個面板。然後在最終位置的面板屬性中,複製位置,並將其粘貼到第二個面板的位置屬性中。這會將其移到Designer中的適當位置,而不會將其嵌入到另一箇中。這可以根據需要重複使用更多的附加面板。