using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Flat_Form
{
public partial class Form1 : Form
{
//Fields
private Button currentButton;
private Random random;
private int tempIndex;
private Form activeForm;
//Constructor
public Form1()
{
InitializeComponent();
random = new Random();
closeChild.Visible = false;
this.Text = string.Empty;
this.ControlBox = false;
this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea;
}
[DllImport("user32.DLL", EntryPoint = "ReleaseCapture")]
private extern static void ReleaseCapture();
[DllImport("user32.DLL", EntryPoint = "SendMessage")]
private extern static void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);
//Methods
private Color SelectThemeColor()
{
int index = random.Next(ThemeColor.ColorList.Count);
while (tempIndex == index)
{
index = random.Next(ThemeColor.ColorList.Count);
}
tempIndex = index;
string color = ThemeColor.ColorList[index];
return ColorTranslator.FromHtml(color);
}
private void ActivateButton(object btnSender)
{
if (btnSender != null)
{
if (currentButton != (Button)btnSender)
{
DisableButton();
Color color = SelectThemeColor();
currentButton = (Button)btnSender;
currentButton.BackColor = color;
currentButton.ForeColor = Color.White;
currentButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 12.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
topbar.BackColor = color;
logoPanel.BackColor = ThemeColor.ChangeColorBrightness(color, -0.3);
ThemeColor.PrimaryColor = color;
ThemeColor.SecondaryColor = ThemeColor.ChangeColorBrightness(color, -0.3);
closeChild.Visible = true;
}
}
}
private void DisableButton()
{
foreach (Control previousBtn in mainLeft.Controls)
{
if (previousBtn.GetType() == typeof(Button))
{
previousBtn.BackColor = Color.FromArgb(51, 51, 76);
previousBtn.ForeColor = Color.Gainsboro;
previousBtn.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
}
}
}
private void OpenChildForm(Form childForm, object btnSender)
{
if (activeForm != null)
activeForm.Close();
ActivateButton(btnSender);
activeForm = childForm;
childForm.TopLevel = false;
childForm.FormBorderStyle = FormBorderStyle.None;
childForm.Dock = DockStyle.Fill;
this.childPanel.Controls.Add(childForm);
this.childPanel.Tag = childForm;
childForm.BringToFront();
childForm.Show();
label1.Text = childForm.Text.Replace("Form","");
}
private void btnCloseChildForm_Click(object sender, EventArgs e)
{
if (activeForm != null)
activeForm.Close();
Reset();
}
private void Reset()
{
DisableButton();
label1.Text = "HOME";
topbar.BackColor = Color.FromArgb(0, 150, 136);
logoPanel.BackColor = Color.FromArgb(39, 39, 58);
currentButton = null;
closeChild.Visible = false;
}
private void topbar_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x112, 0xf012, 0);
}
private void button1_Click(object sender, EventArgs e)
{
OpenChildForm(new Forms.softwareForm(), sender);
}
private void button2_Click(object sender, EventArgs e)
{
OpenChildForm(new Forms.settingForm(), sender);
}
private void button4_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
//=======================ThemeColor.cs===========================================
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Flat_Form
{
public static class ThemeColor
{
public static Color PrimaryColor { get; set; }
public static Color SecondaryColor { get; set; }
public static List<string> ColorList = new List<string>() { "#3F51B5",
"#009688",
"#FF5722",
"#607D8B",
"#FF9800",
"#9C27B0",
"#2196F3",
"#EA676C",
"#E41A4A",
"#5978BB",
"#018790",
"#0E3441",
"#00B0AD",
"#721D47",
"#EA4833",
"#EF937E",
"#F37521",
"#A12059",
"#126881",
"#8BC240",
"#364D5B",
"#C7DC5B",
"#0094BC",
"#E4126B",
"#43B76E",
"#7BCFE9",
"#B71C46"};
public static Color ChangeColorBrightness(Color color, double correctionFactor)
{
double red = color.R;
double green = color.G;
double blue = color.B;
//If correction factor is less than 0, darken color.
if (correctionFactor < 0)
{
correctionFactor = 1 + correctionFactor;
red *= correctionFactor;
green *= correctionFactor;
blue *= correctionFactor;
}
//If correction factor is greater than zero, lighten color.
else
{
red = (255 - red) * correctionFactor + red;
green = (255 - green) * correctionFactor + green;
blue = (255 - blue) * correctionFactor + blue;
}
return Color.FromArgb(color.A, (byte)red, (byte)green, (byte)blue);
}
}
}
Download the project of Visual Studio 2013 in DropBox Download