2010-12-10 180 views
3

我有一種表單,以兩種模式顯示。如果您使用的是選項卡控件,並且每個選項卡上的控件佈局不同,切換模式完全改變了表單的外觀,就像您期望的那樣。WinForms製表符控制問題

如果我可以隱藏選項卡本身,選項卡控件將是完美的。

當然,我可以使用兩個面板,並在語法上顯示和隱藏適當的面板。我試過這個,但是我的錨定不斷變得混亂(我認爲它是一個Visual Studio設計器錯誤)。

理想情況下,我想使用「嚮導」控件,它是無標籤的,並且designtime,繪製第一頁的控件,將「PageNumber」屬性切換到第二頁,然後將控件拖放到第二頁上。

我以爲TabControl具有不帶標籤的功能,例如,它很適合創建嚮導式界面。

這樣做的最好方法是什麼,以便我的設計時間外觀模仿運行時?

目前,我有2個面板,一個直接在另一個面板上,每個觸發器都有可見的屬性,我的自動錨定功能正在讓所有的VS都搞砸。我可能不得不求助於編寫我自己的存檔代碼,但這並不困難,但是當設計env儘可能反應屏幕在運行時的外觀時,我很喜歡它。它只是讓生活更輕鬆。

我Telerik的Q3的WinForm控件,也是如此,萬一有在控制設置一個替代...

建議?

回答

13

這是可能的。爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。將新控件從工具箱的頂部拖放到表單上。它在設計時有選項卡,因此您可以輕鬆地在頁面之間切換。但在運行時隱藏它們,請使用代碼中的SelectedIndex或SelectedTab屬性切換視圖。

using System; 
using System.Windows.Forms; 

class PageControl : TabControl { 
    protected override void WndProc(ref Message m) { 
    // Hide tabs by trapping the TCM_ADJUSTRECT message 
    if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1; 
    else base.WndProc(ref m); 
    } 
} 
+0

令人印象深刻。如果它也隱藏在Design視圖中並且該選項卡通過屬性窗口屬性「selectedIndex」進行控制,那將會很好。但是當我試圖去除「DesignMode」異常時,我失去了調整它的能力。 – ChadD 2010-12-10 17:12:45

0

對於它的價值,我會建議你SplitContainer的,並從移動需要的時候左至右SplitSeparator ...

我不知道我的回答將是多大價值,而是要思考的它,這可能是一個方便的解決方案。

希望這有助於

+0

是的,我想到了,但如果我需要第三個視圖,這有點醜陋...我需要一個分離器內的分離器。 – ChadD 2010-12-10 12:27:49

+0

隨着Telerik你可以有3 SplitPanels只有1 SplitContainer,我認爲:http://www.telerik.com/products/winforms/split-container.aspx 但是,它可能會變得很難:) – LaGrandMere 2010-12-10 14:46:55

0

我肯定會使用自定義「用戶控制」 S各自的每個「內容」的要顯示,正如你所說,編程顯示/隱藏它們。關於「錨定」,將東西分別放在你想要和錨定的「用戶控件」上。然後,讓您的「用戶控件」在您將其添加到表單時擁有自己的錨定屬性。控件的大小調整,錨點重新定位和重新繪製僅在控件可見時纔會完成。因此,當您首次啓動表單時,請確保您使IT(用戶控件)可見,然後根據需要將其初始顯示的高度/寬度更改爲表單,然後從該表單運行。

0

模仿隱藏標籤我只是Remove它。問題是你無法輕易取回它,所以我在表單中使用它,因爲我知道它會因爲某個特定的原因而打開,之後關閉,而無需實際使用刪除的選項卡。如果您使用不同的參數再次打開表單,它將使用其他選項卡打開並刪除不需要的表單。