using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApp { public class TransparentTabControl : TabControl { private List pages = new List(); public void MakeTransparent() { if (TabCount == 0) throw new InvalidOperationException(); var height = GetTabRect(0).Bottom; // Move controls to panels for (int tab = 0; tab < TabCount; ++tab) { var page = new Panel { Left = this.Left, Top = this.Top + height, Width = this.Width, Height = this.Height - height, BackColor = Color.Transparent, Visible = tab == this.SelectedIndex }; for (int ix = TabPages[tab].Controls.Count - 1; ix >= 0; --ix) { TabPages[tab].Controls[ix].Parent = page; } pages.Add(page); this.Parent.Controls.Add(page); } this.Height = height /* + 1 */; } protected override void OnSelectedIndexChanged(EventArgs e) { base.OnSelectedIndexChanged(e); for (int tab = 0; tab < pages.Count; ++tab) { pages[tab].Visible = tab == SelectedIndex; } } protected override void Dispose(bool disposing) { if (disposing) foreach (var page in pages) page.Dispose(); base.Dispose(disposing); } protected override CreateParams CreateParams { get { var parms = base.CreateParams; parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN return parms; } } } }