2011-06-24 30 views
1

C#WinForms: 我試圖在附加的圖片中找到調整大小問題的好方法。 藍色區域:無論表單大小如何,我都希望它具有固定尺寸。紅色區域:當我調整窗體大小時,我希望它調整大小。 只有當我想要藍色區域正確調整大小時,當我更改語言以便某些非英語朗語時,如果標籤,複選框等中的翻譯文本變得更長,我希望它仍然適合在那裏。 我以爲我可以使用兩列的TableLayout,在此表格佈局的左列中放置一個Panel並在其中繪製我的控件,但是我如何將左側面板保留爲藍色區域的固定大小我的要求?創建可重新調整大小的UI表單的一些想法

感謝

enter image description here

回答

1

這應該工作:

在窗體上放一個FlowLayoutPanel。 將兩個面板放在它上面。一個用於左側內容,另一個用於右側。 將左側的AutoSize屬性設置爲true。 在此面板中,我將使用啓用AutoSize的TableLayoutPanel作爲控件。

在第二個面板上,您應該啓用錨左,頂部和右前部以佔用剩餘的可用空間。

對於微調,您可以設置控件的邊距和填充。

希望有所幫助。一般來說,你可以通過winforms獲得幾乎所有的自動化UI,你只需要弄清楚什麼是最好的方法。我幾乎可以肯定,我可以在30分鐘內做到這一點。

可用於才達到一個可調整大小的形式的一些一般屬性/控制:

  • 錨點(上,左,下,右)。定義控件在調整大小時的行爲。如果您希望控件位於調整大小的右側,請將錨設置爲頂部,右側。如果您希望它水平增長,請將其設置爲「上」,「左」和「右」。如果您希望它水平和垂直增長,請將其設置爲「上」,「左」,「下」,「右」。對於FlowLayoutPanel或TableLayoutPanel中的控件,錨點的行爲有點不同,並且定義了控件應該連接到哪一側。

  • 碼頭,允許控制附加到其父,無論是在一側(上,左,下或右,或使用最大可用空間(填充)

  • 自動調整和AutoSizeMode(GrowOnly, GrowAndShring) - 允許控件調整到所需或可用空間的大小。可以與MinimumSize和MaximumSize一起使用。

  • 保證金 - 定義自身與父級(或堆棧中的下一個)之間的控件聲明的空間。可以設置爲左,右,頂部和底部

  • 填充 - 定義控件在它自身和它的孩子之間的空間。

  • TableLayoutPanel是一個容器,您可以在其中爲行定義具有固定寬度,百分比值或僅自動調整大小的列。如果在TableLayoutPanel中放置一個控件,您可以告訴它使用具有Rowspan/Colspan屬性的多個列/行

  • FlowLayoutPanel - 將所有控件放置在水平或垂直堆棧上。

  • 如果您有一個嵌套的結構,如果可能有困難選擇或移動控件。 Visual Studio有一個工具窗口,顯示可幫助您的文檔樹。

  • 一般:保持簡單。經常有比一個TableLayoutPanel嵌套了一個TableLayoutPanel一個TableLayoutPanel內(你明白了吧,對不對?)

+0

我嘗試了Frosty840在一個測試項目的評論中提到過,它工作正常。現在我想看看我的真實項目是否也有相同的作品。那麼如果這不起作用,我會找到你的解決方案。 – Bohn

2

您可以輕鬆的使用面板。將頂部面板上的藍色和橙色區域放置在兩個面板上,將其DockStyle設置爲頂部。對於藍色區域,將DockStyle設置爲左側,對於橙色 - 填充

如果您需要根據其內容自動調整橙色部分的寬度,請將tableLayoutControl放入其中,並將控件放入其單元格中。然後你應該把它放到另一個tableLayoutControl中,它包含你的兩個面板(藍色和橙色)

根據它的語言,沒有其他簡單的方法來調整左邊部分的大小(除非你知道尺寸是多少另一種語言和編程方式改變它)

編輯:

由於Frosty840在評論中提到,你可以用面板同樣的伎倆,只是設置它的自動調整大小,以真實,AutoSizeMode到GrowAndShrink

+0

怎麼樣的調整大小的問題時,語言的變化和藍色區域需要更多的空間更容易的解決方案?它是否會自動將紅色區域向右推動以騰出更多空間? – Bohn

+1

@BDotA。在這種情況下,您需要手動跟蹤它。最好是使用TableLayouPanel,然後你可以將它的左列設置爲AutoSize – username

+0

是的,這就是我在問題中提到的:如果我使用具有自動化面板的表格佈局,那麼當調整表格的左側區域時也會調整大小。我希望它是一個固定的大小。 – Bohn

0

如果我是你的話在新的UI屏幕上工作時,我會給WPF/XAML一個鏡頭。它在調整大小和佈局時好得多:)

+0

它實際上是一個從VB 6.0移動過來的舊UI!到C#WinForms。我們不允許使用WPF。 – Bohn

+0

需要N年遷移,然後再遷移到WPF。可能值得說服你的團隊跳過WinForms :) –

0

我認爲你可以使用SplitContainer。您可以將藍色部分放置在SplitContainer的左側面板中,將紅色部分放在右側面板中,並保持滑塊位置固定。

演示請檢查此article

+0

splitter?我不希望用戶能夠通過拖動分隔線邊框來調整列的大小 – Bohn

+0

確定,以便我們可以將滑塊固定。當語言更改並且藍色區域需要更多空間時,如何調整大小調整問題?它是否會自動將紅色區域向右推動以騰出更多空間? – Bohn

+0

@BDotA - 您可以在左側面板中「填充」藍色部分。 – Bibhu

相關問題