我有一個Windows窗體,有一堆控件,它工作得很好。所有控件都包含在一個TableLayoutPanel
中,根據控件的基本尺寸自動調整大小,Form
根據面板進行自動調整,所以我不必擔心不同平臺和計算機的尺寸,因爲一切都應根據當前尺寸調整大小配置的設置。包含TabControl的自動調整表格
例如,下面是一個簡單的例子。 相關的代碼是:
//...code defining all the other Commands and .Add()'ing them to the Panel
form.Controls.Add(Panel);
form.AutoSize = true;
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.ShowDialog();
我現在想這整個面板,並把它放在一個TabControl內,所以,它僅僅是一個標籤amonst等等。我這樣做如下:
//...code defining all the other Commands and .Add()'ing them to the Panel
TabControl tabControl = new TabControl();
tabControl.Dock = DockStyle.Fill;
TabPage tabPage = new TabPage("C1");
tabPage.Controls.Add(Panel);
tabControl.TabPages.Add(tabPage);
form.Controls.Add(tabControl);
form.AutoSize = true;
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.ShowDialog();
因此,基本上,代替將Panel
到Form
,我把它添加到被添加到被添加到Form
的TabControl
的TabPage
。然而,這會導致: Results http://img51.imageshack.us/img51/685/5112013112725am.jpg
的文檔指出AutoSize
屬性TabControl
和TabPage
是沒有意義單純的基礎設施。我發現的大多數「解決方案」都建議使用.Dock = DockStyles.Fill
,這有助於TabControl
現在填寫上面的表單,而不是佔用更小的一部分。然而,表格本身保持不變。
我想過使用Panel
的規模和製造TabControl
的大小等於(或函數)它的,但我注意到,Size
參數顯然只有當Panel
塗變化,因爲添加Controls並沒有改變它,所以我不得不等待Panel
去繪畫然後調整它的大小,這聽起來很sl。。有更好的解決方案嗎?
UPDATE 使用錨定和設置
Panel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
tabControl.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
只會導致這樣的:
http://img803.imageshack.us/img803/3453/5112013125710pm.jpg
無關的評論:您的GUI似乎是某種平面圖或圖設計器應用程序。我強烈建議你使用相關的當前UI技術,並留下winforms。 ['Here'](http://stackoverflow.com/a/15821573/643085)是在WPF + MVVM中完成類似事件的一個例子,支持動畫,鼠標拖動,動畫以及其他非常有趣的視覺和交互功能。 – 2013-05-11 15:56:24
更不用說你在這裏遇到的問題(這是缺乏獨立的winforms分辨率)絕對不存在於新技術。 – 2013-05-11 16:02:06
是的,我看着那個鏈接,看起來很酷。感謝您讓我花了一整天的時間學習WPF。另外......你真的對WPF充滿激情,我可以說。 – Wasabi 2013-05-11 16:18:08