可折叠的带过滤功能的分割控件

Posted ZGJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可折叠的带过滤功能的分割控件相关的知识,希望对你有一定的参考价值。

 资源部分在QQ群:616945527

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//CreateByZGJ 1981633
namespace BaseUserControl
{
public partial class UCAlphaCollapseBar : UserControl
    {
        public enum PressButton
        {
            COLLAPSE_BUTTON=1,
            ALL_BUTTON,
            ALPHA_BUTTON
        }
        /// <summary>
        /// 代理事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <param name="pressButton">点击的按钮</param>
        /// <param name="data">按钮附加信息</param>
        public delegate void PressBarButtonHandler(object sender, EventArgs e,PressButton pressButton,String data);
        //添加事件代理
        public event PressBarButtonHandler BarButtonClick;
        public Boolean bCollapse = false;
        private int orgParentWidth = 0;
        public UCAlphaCollapseBar()
        {
            InitializeComponent();
            buttonALL.Click+= new EventHandler(ControlClickEvent);
            buttonCollapse.Click += new EventHandler(ControlClickEvent);
        }
        /// <summary>
        /// 添加按钮
        /// </summary>
        /// <param name="dataList"></param>
        public void AddButton(List<string> dataList,bool bSort=false)
        {
            ClearButtons();
            if (bSort)
            dataList.Sort();
            for (int i = 0; i < dataList.Count; i++)
            {
                Button button = new Button();
                button.Margin = Padding.Empty;
                button.Text = dataList[i];
                button.Height = 30;
                button.FlatStyle = FlatStyle.Flat;
                button.FlatAppearance.BorderSize = 0;
                button.TextAlign = ContentAlignment.MiddleCenter;
                button.Dock = DockStyle.Top;
                panelMain.Controls.Add(button);
                button.BringToFront();
                button.Tag = "alphabutton";
                button.Click += new EventHandler(ControlClickEvent);
            }
        }
        /// <summary>
        /// 重置所有按钮颜色
        /// </summary>
        private void ResetAllButtonsColor()
        {
            buttonALL.ForeColor = Color.Black;
            //不删除前两个按钮
            for (int i = panelMain.Controls.Count - 1; i >= 0; i--)
            {
                panelMain.Controls[i].ForeColor=Color.Black;
            }
        }
        /// <summary>
        /// 清空按钮
        /// </summary>
        public void ClearButtons()
        {
            //不删除前两个按钮
            for (int i = panelMain.Controls.Count-1; i >=0 ; i--)
            {
                panelMain.Controls[i].Dispose();
            }
        }
        protected void ControlClickEvent(object sender, EventArgs e)
        {
            Button button = (Button)sender;
            PressButton pressButton;
            //点了全部按钮
            if (buttonALL==button)
            {
                ResetAllButtonsColor();
                buttonALL.ForeColor = Color.DarkGreen;
                pressButton = PressButton.ALL_BUTTON;
                BarButtonClick(sender, e, pressButton, "");
            }
            else if(buttonCollapse==button)
            {
                if(buttonCollapse.Text=="<<")
                {
                    for (int i = 0; i < this.Parent.Controls.Count; i++)
                    {
                        if(this.Parent.Controls[i]!=this)
                        {
                            this.Parent.Controls[i].Visible = false;
                        }
                    }
                    orgParentWidth = this.Parent.Width;
                    this.Parent.Width = this.Width;
                    buttonCollapse.Text = ">>";
                    bCollapse = true;
                }
                else
                {
                    for (int i = 0; i < this.Parent.Controls.Count; i++)
                    {
                        if (this.Parent.Controls[i] != this)
                        {
                            this.Parent.Controls[i].Visible = true;
                        }
                    }
                    this.Parent.Width = orgParentWidth;
                    buttonCollapse.Text = "<<";
                    bCollapse = false;
                }
                pressButton = PressButton.COLLAPSE_BUTTON;
                BarButtonClick(sender, e, pressButton, bCollapse.ToString());
            }
            else
            {
                if(button.Tag.ToString()== "alphabutton")
                {
                    ResetAllButtonsColor();
                    button.ForeColor = Color.DarkGreen;
                    
                }
                pressButton = PressButton.ALPHA_BUTTON;
                BarButtonClick(sender, e, pressButton, button.Text);
            }
            
        }
    }
}

 

以上是关于可折叠的带过滤功能的分割控件的主要内容,如果未能解决你的问题,请参考以下文章

Pycharm首次使用教程

pycharm是用来干嘛的

可折叠工具栏 - 使片段页脚在 Android 中始终可见

如何使用 jQuery Mobile 过滤可折叠集?

分组可折叠导航控制 Windows 商店应用程序?

eclipse中js代码如何设置可折叠?