Winform 自定义图片菜单控件

来源:互联网 发布:查询行业数据 编辑:程序博客网 时间:2024/04/30 00:15

//菜单控件代码

 public partial class AnalysisSelectButton : UserControl

    {
        /// <summary>
        /// 菜单当前选中状态
        /// </summary>
        private bool _selectedStatus = false;

        private Image _btnImage = null;
        /// <summary>
        /// 获取与设置未选中时的按钮图片
        /// </summary>
        public Image BtnImage
        {
            get
            {
                return _btnImage;
            }
            set
            {
                _btnImage = value;
                if (!_selectedStatus)
                {
                    pictureBox1.Image = _btnImage;
                }
            }
        }

        private Image _selectedImage = null;
        /// <summary>
        /// 获取与设置选中时的图片
        /// </summary>
        public Image SelectedImage
        {
            get
            {
                return _selectedImage;
            }
            set
            {
                _selectedImage = value;
                if (_selectedStatus)
                {
                    pictureBox1.Image = _selectedImage;
                }
            }
        }

        public AnalysisSelectButton()
        {
            InitializeComponent();
        }

        public string 场景 { get; set; }

        /// <summary>
        /// 获取与设置按钮文字
        /// </summary>
        public String BtnText
        {
            get
            {
                return label1.Text;
            }
            set
            {
                label1.Text = value;
            }
        }

        /// <summary>
        /// 按钮点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void BtnClick(object sender, EventArgs e)
        {
            if (LoadGraghCtlEvent!= null)
            {
                LoadGraghCtlEvent(BtnText,场景);
            }
        }

        /// <summary>
        /// 场景改变事件执行函数
        /// </summary>
        /// <param name="cj"></param>
        public void SelectedChange(string cj)
        {
            if (cj == 场景)
            {
                _selectedStatus = true;
                pictureBox1.Image = SelectedImage;
                //点击之后就不设为不可点击
                this.Enabled = false;
            }
            else
            {
                _selectedStatus = false;
                pictureBox1.Image = BtnImage;
                this.Enabled = true;
            }
        }


        /// <summary>
        /// 加载图表控件事件
        /// </summary>
        public event LoadGraghCtlEventHandler LoadGraghCtlEvent;

    }

    /// <summary>
    /// 加载图表控件代理
    /// </summary>
    /// <param name="BtnText"></param>

    public delegate void LoadGraghCtlEventHandler(string btntext,string cj);


//菜单控件按钮的使用

  public void Init()
        {

             //上面的代码生成控件后,拖入到界面中来,进行属性设置

            //就业信息监测菜单
            JyxxjcMenu.BtnText = "就业信息监测";
            JyxxjcMenu.BtnImage = new Bitmap(string.Format(@"{0}\Image\{1}", Application.StartupPath, "jy1.png"));     //把图片放入debug中采用这种写法可以设置图片
            JyxxjcMenu.SelectedImage = new Bitmap(string.Format(@"{0}\Image\{1}", Application.StartupPath, "jy2.png"));

            JyxxjcMenu.场景 = "就业信息监测场景";
            //默认点击就业信息监测
            JyxxjcMenu.BtnClick(null, null);
            //就业决策分析菜单
            JyjcfxMenu.BtnText = "就业决策分析";
            JyjcfxMenu.BtnImage = new Bitmap(string.Format(@"{0}\Image\{1}", Application.StartupPath, "jc1.png"));
            JyjcfxMenu.SelectedImage = new Bitmap(string.Format(@"{0}\Image\{1}", Application.StartupPath, "jc2.png"));
            JyjcfxMenu.场景 = "就业决策分析场景";
            //订阅控制场景控件显示事件
            JyxxjcMenu.LoadGraghCtlEvent += LoadGraghCtlEvent;
            JyjcfxMenu.LoadGraghCtlEvent += LoadGraghCtlEvent;
        }

        /// <summary>
        /// 控制场景控件显示和按钮改变自己效果处理
        /// </summary>
        /// <param name="btntext"></param>
        private void LoadGraghCtlEvent(string btntext,string cj)
        {
             UserControl sim = null;
             switch (btntext)
             {
                 case "就业信息监测":
                     sim = new InfoCheckMng();
                     break;
                 case "就业决策分析":
                     sim = new DecisionAnalysisMng();
                     break;
             }
             if (sim != null)
             {
                 //加载控件
                 sim.Dock = DockStyle.Fill;
                 panel2.Controls.Clear();
                 panel2.Controls.Add(sim);
                 //按钮改变自己显示效果
                 JyxxjcMenu.SelectedChange(cj);
                 JyjcfxMenu.SelectedChange(cj);
             }
        }


0 0