的應用程序是C#的WinForms .NET 4.0。
我有一個SplitContainer
佔據了大部分的形式,它被設置爲所有方向錨,所以它隨着形式重新調整大小。左面板(Panel1)有一個簡單的菜單,這裏沒有問題。右側面板(Panel2)更加複雜,並且包含許多嵌套的選項卡控件(包含許多控件) - 它非常複雜,但不會改變。
問題是重新調整表格的效果並不好。事實上,如果通過緩慢拖動邊緣來調整大小,那麼它可以正常工作,但可以快速拖動或使用「恢復」按鈕(表單右上角),然後就會出現問題。
我的控制層次
以下是我的控制層級,它絕對是一個削減版的一個簡單的例子,但確實凸顯了嵌套的標籤控制的,可與複製幫助:
- 形式
- 拆分集裝箱(主播:上,左,下,右)
- SC Panel1的(最小寬度:300)
- TreeViewControl(忘記它叫什麼)
- SC是Panel2
- 面板(錨:頂部,左邊,底部,右側)
- 選項卡控件(錨點:頂部,左側,底部,右側)
- 選項卡控件包含大量溢出屏幕並需要導航按鈕才能顯示的頁面p右下角(主播:上,左,下,右)
- 選項卡控件(錨點:頂部,左側,底部,右側)
- 面板(錨:頂部,左邊,底部,右側)
- SC Panel1的(最小寬度:300)
- 拆分集裝箱(主播:上,左,下,右)
調試詳細
一些調試後,它看起來實際上是Panel2
(拆分容器的孩子)沒有正確調整大小,而實際的SplitContainer
本身調整正常。
這裏是調試值,顯示此...
全寬形式,調整大小前:
splitContainerMain.Width: 1479
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
所有預期,splitContainerMain.Panel2.Width
比splitContainerMain.Width
小。
調整大小後在那裏出現問題:
splitContainerMain.Width: 815
splitContainerMain.Panel2.Width: 1206
panelCenter.Width: 1203
tabControlMain.Width: 1215
可以看出,在splitContainerMain.Width
已調整爲所需,但splitContainerMain.Panel2.Width
,隨後其子都沒有。
注意:請記住,寬度更新正確,如果我手動調整的形式慢慢地 - 這是不是我沒有正確設置任何錨的問題。
我的努力到目前爲止
我想知道如果這個問題是related to this problem here,但我不準備建立一個新的「MySplitContainer」,試圖解決這個問題。
我試圖做的是使用各種Form resize事件,並嘗試手動設置寬度,但無濟於事。我想我想嘗試的是從某種事件中設置Panel2.Width
值。
我所尋找的
- 反正是有強制
splitContainerMain.Panel2.Width
正確調整splitContainerMain
大小變化時? - 或者,我該如何計算
Panel2.Width
應該是什麼?我怎樣才能從Form.Resize
事件中設置這個值? (或另一個事件?)
我試圖把一個形式進行測試,但我還沒有看到你描述的不良行爲。如果你可以提供更多的佈局細節,這將有所幫助。但除此之外,我沒有太多運氣來重現你的結果。 – DonBoitnott
@DonBoitnott:我已經添加了一些關於我的佈局的細節,我知道這不是很容易複製,但也許它會做一些事情。我會看看我是否可以在一個新的Winforms應用程序中複製 – musefan
什麼是'panelCenter'?而且你如何在代碼中調整大小... ...只需拖動窗體邊緣? – DonBoitnott