如何製作不顯示標籤標題的標籤管理器?如何創建沒有標籤頁眉的TabControl?
這是一個winforms應用程序,並且使用標籤管理器的目的是顯示內容只能通過代碼進行更改。對於各種菜單選項更改屏幕內容的菜單很有用。
如何製作不顯示標籤標題的標籤管理器?如何創建沒有標籤頁眉的TabControl?
這是一個winforms應用程序,並且使用標籤管理器的目的是顯示內容只能通過代碼進行更改。對於各種菜單選項更改屏幕內容的菜單很有用。
隱藏標準TabControl
上的標籤非常簡單,只要您知道該技巧即可。當需要調整標籤大小時,標籤控件會發送一個TCM_ADJUSTRECT
message,所以我們只需要捕獲該消息。 (我確信之前已經回答了這個問題,但發佈代碼比搜索代碼容易)。
將以下代碼添加到項目中的新類中,重新編譯並使用CustomTabControl
類代替構建的代碼-in控制:
class CustomTabControl : TabControl
{
private const int TCM_ADJUSTRECT = 0x1328;
protected override void WndProc(ref Message m)
{
// Hide the tab headers at run-time
if (m.Msg == TCM_ADJUSTRECT && !DesignMode)
{
m.Result = (IntPtr)1;
return;
}
// call the base class implementation
base.WndProc(ref m);
}
}
(代碼示例最初是從Dot Net Thoughts拍攝。)
注意,這不會對位於兩側或底部的標籤頭正常工作。但是,這不僅看起來很奇怪,反而無法在運行時看到選項卡。把他們放在他們所屬的頂端。
對,如果是網絡應用程序,您可以根據自己的需要構建自己的DIV,並隱藏/顯示。
編輯和註釋使問題更清晰後,我認爲處理這個問題的正常方法是使用多個面板而不是製表符。
與其他人一起,我發現你的問題有點混亂。我以前用這個方法找到了here。通過這種方式,您可以更改一個屬性,以確定是否要顯示標籤標題。
我想,使用面板是最簡單的解決方案。此外,我建議使用我的(免費,開源)VisualStateManager
來簡化切換並消除大量的.Enabled = true
恐怖。
包裝可用on Nuget。
只要寫這樣的代碼:
// Contains and propagates information about current page
private SwitchCondition<int> settingPageCondition;
// Controls state of specific controls basing on given SwitchCondition
private VisualStateSwitchController<int> settingPageController;
// (...)
private void InitializeActions()
{
// Initialize with possible options
settingPageCondition = new SwitchCondition<int>(0, 1);
settingPageController = new VisualStateSwitchController<int>(
null, // Enabled is not controlled
null, // Checked is not controlled
settingPageCondition, // Visible is controller by settingPageCondition
new SwitchControlSet<int>(0, pGeneral), // State 0 controls pGeneral
new SwitchControlSet<int>(1, pParsing)); // State 1 controls pParsing
}
// (...)
public void MainForm()
{
InitializeComponent();
InitializeActions();
}
// (...)
// Wat to set specific page
settingPageCondition.Current = 0;
是它的WinForms或Web應用程序? – JPReddy 2011-02-06 08:33:57
@JPReddy你怎麼知道你應該添加** infragistics **標籤? – alex 2011-02-06 08:47:59
沒有足夠的信息。這是什麼類型的應用程序(WinForms,WPF,Web,...)?您是否使用第三方標籤控件(如@ JPReddy的標籤建議)或內置的標籤控件? – 2011-02-06 08:56:09