C#仿WINDOWS可折叠导航栏
昨天晚上看见了个帖子,野比小王子在2楼留下下了版主的
,今天下午没事做,自己也搞了一下,效果 不
怎么好(窗体中有5个panel控件,设置其中4个的DOCK属性为TOP,具体见源码)。
废话不多说,代码如下:
C# code
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2 {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Font ft = new Font("黑体",12);
private static Panel iPanel= new Panel();
private static PictureBox iPict =new PictureBox();
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = global::WindowsFormsApplication2.Properties.Resources.朝上按钮;
pictureBox1.Size = global::WindowsFormsApplication2.Properties.Resources.朝上按钮.Size;
pictureBox2.Image = global::WindowsFormsApplication2.Properties.Resources.朝上按钮;
pictureBox2.Size = global::WindowsFormsApplication2.Properties.Resources.朝上按钮.Size;
ft = label1.Font;
}
private void label1_MouseEnter(object sender, EventArgs e)
{
((Label)sender).ForeColor = Color.Red;//设置控件文字
字颜色
((Label)sender).Font = new Font(ft, ft.Style | FontStyle.Underline);//设置控件字体
}
private void label1_MouseLeave(object sender, EventArgs e)
{
((Label)sender).ForeColor = Color.Black;//设置控件文
字颜色
((Label)sender).Font = new Font(ft, ft.Style); //设
置控件字体
}
private void pictureBox1_Click(object sender, EventArgs e)
{
int i =
Convert.ToInt16(((PictureBox)sender).Tag.ToString());
switch (i)
{
case 1:
iPanel = panel2_1;
iPict = pictureBox1;
break;
case 2:
iPanel = panel2_2;
iPict = pictureBox2;
break;
}
if (Convert.ToInt16(iPanel.Tag.ToString()) == 1)
{
iPanel.Tag = 2;
iPict.Image = Properties.Resources.朝上按钮;
iPanel.Visible = true;
}
else
{
iPanel.Tag = 1;
iPict.Image = Properties.Resources.朝下按钮;
iPanel.Visible = false;
}
}
}
}