65.9K
CodeProject 正在变化。 阅读更多。
Home

如何创建一个简单的可展开/折叠面板

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (17投票s)

2014年11月1日

CPOL

1分钟阅读

viewsIcon

89851

downloadIcon

6613

如何在C#.NET中为Windows Forms创建一个简单的可展开/折叠菜单面板。

引言

我曾在Google上搜索很多C#代码,以创建应用程序的可展开菜单或面板。我找到了,但需要编写大量的代码,而且非常耗时。为什么我们要浪费宝贵的时间,而有简单易行的方法可以创建相同的功能呢?我在这里解释我创建可展开/折叠菜单的方法。请参阅下图

Using the Code

请遵循以下步骤

  1. 创建一个Windows Forms应用程序(例如:frmMain
  2. 添加一个Panel控件,并将其停靠在您想要的位置(例如:pnlMenu
  3. 在主面板内添加一个Panel(例如:pnlMenu -> pnlMenuGroup1
  4. 将一个Button或其他控件(如label/picturebox)添加到内部面板,并将其停靠在顶部 - 这是菜单头。(例如:btnMenuGroup1 - 按钮高度 = 25)
  5. 将Button控件作为子菜单添加到内部面板,并将其停靠在顶部。现在它看起来像一个菜单组。(例如:btnAbout - 按钮高度 = 25)
  6. 创建更多像现在这样创建的“菜单组”。(按照步骤1到5。)
  7. 将图像(上/下箭头)添加到将作为您的“菜单头”的Button。

*** 添加 Picturebox 控件并加载图像,并调整透明度,以使您的窗口具有更多的视觉风格。

//
// frmMain

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 ExpandablePanelSample
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            this.Width = Screen.PrimaryScreen.WorkingArea.Width;
            this.Height = Screen.PrimaryScreen.WorkingArea.Height;
            Left = Top = 0;

            pnlMenuGroup1.Height = 25;
            pnlMenuGroup2.Height = 25;
            pnlMenuGroup3.Height = 25;

            btnMenuGroup1.Image = Properties.Resources.down;
            btnMenuGroup2.Image = Properties.Resources.down;
            btnMenuGroup3.Image = Properties.Resources.down;
        }

        private void btnMenuGroup1_Click(object sender, EventArgs e)
        {
            if (pnlMenuGroup1.Height == 25)
            {
                pnlMenuGroup1.Height = (25 *4) + 2;
                btnMenuGroup1.Image = Properties.Resources.up;
            }
            else
            {
                pnlMenuGroup1.Height = 25;
                btnMenuGroup1.Image = Properties.Resources.down;
            }
        }

        private void btnMenuGroup2_Click(object sender, EventArgs e)
        {
            if (pnlMenuGroup2.Height == 25)
            {
                pnlMenuGroup2.Height = (25 * 4) + 2;
                btnMenuGroup2.Image = Properties.Resources.up;
            }
            else
            {
                pnlMenuGroup2.Height = 25;
                btnMenuGroup2.Image = Properties.Resources.down;
            }
        }

        private void btnMenuGroup3_Click(object sender, EventArgs e)
        {
            if (pnlMenuGroup3.Height == 25)
            {
                pnlMenuGroup3.Height = (25 * 4) + 2;
                btnMenuGroup3.Image = Properties.Resources.up;
            }
            else
            {
                pnlMenuGroup3.Height = 25;
                btnMenuGroup3.Image = Properties.Resources.down;
            }
        }

        private void btnAbout_Click(object sender, EventArgs e)
        {
            frmAbout frmChild = new frmAbout();
            frmChild.MdiParent = this;
            frmChild.Show();
        }
    }
}

//

有关详细信息,请下载随附的项目示例。

编程愉快!

© . All rights reserved.