12312321
This commit is contained in:
64
TransparentTabControl.cs
Normal file
64
TransparentTabControl.cs
Normal file
@ -0,0 +1,64 @@
|
||||
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<Panel> pages = new List<Panel>();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user