摩羯射手_登山且莫问山高

c#,vb,sql,大型信息化项目实践 用创业的心,处理好每一件事。

导航

使用C#创建自定义控件

  创建自定义控件,在新建工程时,选择自定义控件


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace KJ128WindowsLibrary
{
    /// <summary>
    /// LabelPanelStyle 样式
    /// </summary>
    public enum LabelPanelStyle
    {
        /// <summary>
        /// 单边线模式
        /// </summary>
        BorderMode,
        /// <summary>
        /// 渐变填充模式
        /// </summary>
        FillGradual
    }

    public partial class LabelPanel : UserControl
    {
        #region 私有变量

        #region 边框
        private int m_BorderLineWidth = 1;//线宽
        private Color m_BorderLineColor = Color.FromArgb(118, 153, 199);//边线颜色
        private bool m_IsBorderLine = true; //是否使用边框线

        #endregion
       
        #region 样式
        private LabelPanelStyle m_SetLabelPanelStyle = LabelPanelStyle.BorderMode;//样式
       
       
        #endregion
        #region 填充背景
        private bool m_IsFillBackGround = false; //是否填充背景色
        private Color m_FillGradualColor1 = Color.FromArgb(255,255,255);//Color1
        private Color m_FillGradualColor2 = Color.FromArgb(236,238,244);//color2

        private LinearGradientMode m_SetBackGroundGradineMode = LinearGradientMode.ForwardDiagonal;//GradineMode
      
       
        #endregion

        #region Label
          
        #endregion

        #endregion
        #region 构造函数
        /// <summary>
        /// 函数
        /// </summary>
        public LabelPanel()
        {
            InitializeComponent();
            this.Paint += new PaintEventHandler(LabelPanel_Paint);
        }

  
        #endregion
        #region 属性
        #region 外围边框 border
        /// <summary>
        /// 边框线宽
        /// </summary>
        public int BorderLineWidth
        {
            get
            {
              
                return m_BorderLineWidth;
            }
            set
            {
                m_BorderLineWidth = value;
            }

        }
        /// <summary>
        /// 边框线的颜色
        /// </summary>
        public Color BorderLineColor
        {
            get
            {
                return m_BorderLineColor;
            }
            set
            {
                m_BorderLineColor = value;
            }
        }
        /// <summary>
        /// 有边框线吗
        /// </summary>
        /// <value>
        /// 有边框吗
        /// </value>
        public bool IsBorderLine
        {
            get
            {
                return m_IsBorderLine;
            }
            set
            {
                m_IsBorderLine = value;
                this.Refresh();
            }
        }
        #endregion
        #region 样式
        /// <summary>
        /// 设置样式
        /// </summary>
        public LabelPanelStyle SetLabelPanelStyle
        {
            get
            {
                return m_SetLabelPanelStyle;
            }
            set
            {
                m_SetLabelPanelStyle = value;
                this.Refresh();
            }
        }
        #endregion
        #region 背景
        /// <summary>
        /// 是否填充背景
        /// </summary>
        public bool IsFillBackGround
        {
            get
            {
                return m_IsFillBackGround;
            }
            set
            {
                m_IsFillBackGround = value;
                this.Refresh();
            }
        }
        /// <summary>
        /// 背景渐变色1
        /// </summary>
        public Color FillGradualColor1
        {
            get
            {
                return m_FillGradualColor1;
            }
            set
            {
                m_FillGradualColor1 = value;
                this.Refresh();
            }
        }
        /// <summary>
        /// 背景渐变色2
        /// </summary>
        public Color FillGradualColor2
        {
            get
            {
                return m_FillGradualColor2;
            }
            set
            {
                m_FillGradualColor2 = value;
                this.Refresh();
            }
        }
        /// <summary>
        /// 背景渐变方式
        /// </summary>
        public LinearGradientMode SetBackGroundGradineMode
        {
            get
            {
                return m_SetBackGroundGradineMode;
            }
            set
            {
                m_SetBackGroundGradineMode = value;
                this.Refresh();
            }
        }
        #endregion
        #endregion
        #region 方法
        /// <summary>
        /// 绘制边线
        /// </summary>
        /// <param name="g"></param>
        void DrawBorder(Graphics g)
        {
            Rectangle rect = new Rectangle(0,0,this.Bounds.Width-1,this.Bounds.Height-1);
            g.DrawRectangle(new Pen(m_BorderLineColor, m_BorderLineWidth), rect);
        }
        /// <summary>
        /// 绘制填充的背景
        /// </summary>
        /// <param name="g"></param>
        void DrawFillBackGroundGradual(Graphics g)
        {
            Rectangle rect = new Rectangle(1, 1, this.Bounds.Width - 2, this.Bounds.Height - 2);
            if (rect.Height < 1 || rect.Height < 1)
            {
                return;
            }
            g.FillRectangle(new LinearGradientBrush(rect, m_FillGradualColor1,
                m_FillGradualColor2, m_SetBackGroundGradineMode), rect);
        }
        #endregion
        #region 事件处理
       /// <summary>
       /// 组件重绘
       /// </summary>
       /// <param name="sender">object</param>
       /// <param name="e">PaintEventArgs</param>
        void LabelPanel_Paint(object sender, PaintEventArgs e)
        {
            if (m_IsBorderLine)
            {
                DrawBorder(e.Graphics);
            }
            if (m_IsFillBackGround)
            {

                 DrawFillBackGroundGradual(e.Graphics);
            }
        }
        #endregion

 

    }
}

复制此代码,即可运行
 

posted on 2007-07-21 09:17  摩羯射手  阅读(2547)  评论(1编辑  收藏  举报