zoukankan      html  css  js  c++  java
  • 【Winform-自定义控件】自定义控件学习+一个笑脸控件例子

    1.CompositeControls组合控件:在原有控件的基础上根据需要进行组合

    2.ExtendedControls 扩展控件:继承自原有控件,添加一些新的属性和方法,绘制一些新元素

    当每个Button都使用一样的样式,可以使用自定义控件统一设置控件的属性、方法。

    using System;
    using System.Windows.Forms;
    using System.Drawing;
    
    public class TouchscreenButton : Button
    {
        public TouchscreenButton()
        {
            this.Width = 100;
            this.Height = 75;
            this.FlatStyle = FlatStyle.Flat;
            this.Cursor = Cursors.Hand;
            this.ForeColor = Color.Black;
            this.BackColor = Color.White;
            this.FlatAppearance.BorderSize = 2;
            this.FlatAppearance.BorderColor = Color.Navy;
        }
    }

    3.CustomControls自定义控件:控件的绘制全部由用户定义

    一个可爱的笑脸控件

        public partial class Smiley : Control
        {
    
            public enum SampleColours
            {
                Red,
                Green,
                Blue,
                Yellow
            }
            //创建一个枚举类型的属性,则这个属性可以进行选择
            private SampleColours _smileyColor; 
            public SampleColours SmileyColor
            {
                get { return _smileyColor; }
                set { _smileyColor = value; }
            }
    
            private string _smileyName;
            public string SmileyName
            {
                get { return _smileyName; }
                set { _smileyName = value; }
            }
    
            public Smiley()
            {
                InitializeComponent();
            }
    
            protected override void OnPaint(PaintEventArgs pe)
            {
                //选择背景颜色
                Color back;
                switch (_smileyColor)
                {
                    case SampleColours.Blue:
                        back = Color.Blue;
                        break;
                    case SampleColours.Green:
                        back = Color.Green;
                        break;
                    case SampleColours.Red:
                        back = Color.Red;
                        break;
                    default:
                        back = Color.Yellow;
                        break;
                }
                Brush background = new SolidBrush(back);
    
                //画背景
                pe.Graphics.FillEllipse(background, 0, 0, this.Width - 1, this.Height - 1);
                //左眼
                pe.Graphics.FillEllipse(Brushes.Black, (this.Width / 4), (this.Height / 4), (this.Width / 6), (this.Height / 6));
                //右眼
                pe.Graphics.FillEllipse(Brushes.Black, this.Width - (this.Width / 3) - 10, (this.Height / 4), (this.Width / 6), (this.Height / 6));
                //
                pe.Graphics.DrawArc(Pens.Black, (this.Width / 4), (this.Height / 2), (this.Width / 2), (this.Height / 4), 0, 180);
    
                // Calling the base class OnPaint
                base.OnPaint(pe);
            }
        }
  • 相关阅读:
    WEB服务器和应用服务器
    java中乱码问题
    面向对象的特征
    数据库中常见的需注意的问题
    String类
    网络编程
    C#泛型基础
    C#中sealed关键字的作用。
    C#自动属性优缺点分析
    TextView属性(转)
  • 原文地址:https://www.cnblogs.com/Sukie-s-home/p/6757778.html
Copyright © 2011-2022 走看看