c# 使用Button和Panel 设计伸缩面板控件

说明:  此文使用的是Button 和Panel设计的伸缩面板

Button: 表示伸缩栏,可用别的控件表示,这里使用用于触发点击事件

Panel:  表示伸缩栏的容器,只要是容器控件就行,这里装控件用的,

没有界面优化界面,勿怪,这里只提供一个思路

效果说明:  每个按钮按循序排列,0-2 ,panel始终在你点击的那个按钮下面,且各个按钮排序不变

看效果图:

程序启动:

点击按钮 0 

c# 使用Button和Panel 设计伸缩面板控件_第1张图片

点击按钮1 

c# 使用Button和Panel 设计伸缩面板控件_第2张图片

点击按钮2 

c# 使用Button和Panel 设计伸缩面板控件_第3张图片


代码:

<pre name="code" class="csharp">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;
using System.Threading;


namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        List<Button> btList = new List<Button> { };
        
        private void Form1_Load(object sender, EventArgs e)
        {
            this.DoubleBuffered = true;

            for (int i = 0; i < 3;i++ )
            {
                Button bt = new Button();
                bt.Tag = i + "";
                bt.Click += new EventHandler(bt_Click);
                bt.Text = i+ "";
                this.Controls.Add(bt);
                btList.Add(bt);
            }
        }

        void bt_Click(object sender, EventArgs e)
        {
            Button bt =sender as Button;

            if(bt== null)
            {
                return;
            }

            int tagNum = Convert.ToInt32(bt.Tag);

            panel1.Dock = DockStyle.None;

            btList[tagNum].Dock = DockStyle.Top;

            if (tagNum == btList.Count - 1)
            {
                for (int i = btList.Count-2; i >=0; --i)
                {
                    btList[i].SendToBack();
                    btList[i].Dock = DockStyle.Top;
                }
            }
            else
            {
                for (int i = 0; i < btList.Count; ++i)
                {
                    if (i < tagNum)
                    {
                        btList[i].SendToBack();
                        btList[i].Dock = DockStyle.Top;
                    }
                    else if (i > tagNum)
                    {
                        btList[i].SendToBack();
                        btList[i].Dock = DockStyle.Bottom;
                    }
                }
            }

            panel1.BringToFront();
            panel1.Dock = DockStyle.Fill;
        }

    }
}


 
 

你可能感兴趣的:(c# 使用Button和Panel 设计伸缩面板控件)