FlatBase.cs 5.4 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Asa.Theme
{
    public partial class FlatBase : UserControl
    {
        /// <summary>
        /// 控件基类
        /// </summary>
        public FlatBase()
        {
            InitializeComponent();
            AutoScaleMode = AutoScaleMode.None;
        }

        #region 隐藏属性
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override bool AutoScroll { get => base.AutoScroll; set => base.AutoScroll = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public new AutoScaleMode AutoScaleMode { get => base.AutoScaleMode; set => base.AutoScaleMode = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override bool AutoSize { get => base.AutoSize; set => base.AutoSize = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override Point AutoScrollOffset { get => base.AutoScrollOffset; set => base.AutoScrollOffset = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override AutoValidate AutoValidate { get => base.AutoValidate; set => base.AutoValidate = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override bool AllowDrop { get => base.AllowDrop; set => base.AllowDrop = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override Color ForeColor { get => base.ForeColor; set => base.ForeColor = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override RightToLeft RightToLeft { get => base.RightToLeft; set => base.RightToLeft = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override Color BackColor { get => base.BackColor; set => base.BackColor = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override Image BackgroundImage { get => base.BackgroundImage; set => base.BackgroundImage = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override ImageLayout BackgroundImageLayout { get => base.BackgroundImageLayout; set => base.BackgroundImageLayout = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public new System.Windows.Forms.BorderStyle BorderStyle { set => base.BorderStyle = value; get => base.BorderStyle; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public new Padding Padding { set => base.Padding = value; get => base.Padding; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override Size MaximumSize { get => base.MaximumSize; set => base.MaximumSize = value; }
        /// <summary>
        /// 
        /// </summary>
        [Browsable(false)]
        public override Size MinimumSize { get => base.MinimumSize; set => base.MinimumSize = value; }
        #endregion



        //==========公共属性==========
        /// <summary>
        /// 鼠标焦点在控件里面
        /// </summary>
        [Browsable(false)]
        public bool Inside { set; get; }



        //==========公共方法==========
        /// <summary>
        /// 鼠标离开,用于没有正确执行FlatBase_MouseLeave事件
        /// </summary>
        public void MouseFocusLeave()
        {
            Inside = false;
            Refresh();
        }

        /// <summary>
        /// 设置可见,用于控件失去焦点时或点击其他控件时执行的事件
        /// </summary>
        public virtual void SetVisible() { }

        /// <summary>
        /// 计算尺寸大小
        /// </summary>
        protected virtual void CalcSize() { }



        //==========私有方法==========
        private void FlatBase_MouseEnter(object sender, EventArgs e)
        {
            if (Parent is FlatForm)
                ((FlatForm)Parent).FocusEnter(this);
            else if (Parent is FlatPanel)
                ((FlatPanel)Parent).FocusEnter(this);

            Inside = true;
            Refresh();
        }

        private void FlatBase_MouseLeave(object sender, EventArgs e)
        {
            if (Parent is FlatForm)
                ((FlatForm)Parent).FocusLeave(this);
            else if (Parent is FlatPanel)
                ((FlatPanel)Parent).FocusLeave(this);

            Inside = false;
            Refresh();
        }

        private void FlatBase_Resize(object sender, EventArgs e)
        {
            CalcSize();
            Refresh();
        }

        private void FlatBase_Load(object sender, EventArgs e)
        {
            BackColor = Common.BACK_COLOR;
            CalcSize();
            Refresh();
        }




        /// <summary>
        /// 处理消息
        /// </summary>
        /// <param name="m"></param>
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == 0x0014) // 禁掉清除背景消息
                return;
            base.WndProc(ref m);
        }


    }
}