zoukankan      html  css  js  c++  java
  • 自定义两个控件,一个是显示图标和文字的矩形,一个是带边框的label(但是不是label)

    记录遇到的两个坑

    坑1. 一开始我继承button 来实现下面的控件1,后面发现button没有双击事件。就改成继承UserControl了。重新编译,导致设计时的控件文本全部被清空,因为UserControl的Text属性被设置了一些属性

         [Bindable(false)]
            [Browsable(false)]
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
            [EditorBrowsable(EditorBrowsableState.Never)]
            public override string Text { get; set; }

    我是这样无脑处理的:

         [Bindable(true)]
            [Browsable(true)]
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
            [EditorBrowsable(EditorBrowsableState.Always)]
            public override string Text
            {
                get { return base.Text; }
                set {
                    base.Text = value;
                    Invalidate();
                }
            }

    坑2. 我有一个字段 Size iconSize; 我给它定义了一个属性

    public Size IconSize
            {
                get { return IconSize; }
                set
                {
                    iconSize = value;
                    Invalidate();
                }
            }

    我把get 里面返回属性本身了。结果可想而知设计时打不开,运行时一会就stackoverflow了。

    控件1.需要居中显示图标和文字。控件2.一个有边框的矩形,居中显示文字,边框是向内的。显示效果如下:

    代码可以在https://github.com/wanglantian/WinformApplication/tree/master/WinformControls/SelfDefineControls里面找。有问题联系讨论。

  • 相关阅读:
    k-近邻算法
    配置nginx 高并发 php
    ubuntu上安装mysql 编译安装
    Webpack探索【1】--- 基础知识
    【JavaScript专题】--- 立即执行函数表达式
    Eslint使用指南
    Maven学习笔记【2】 -- 安装和配置
    Maven学习笔记【1】 -- Maven简介
    Git中如何将代码恢复到之前某个节点
    密码硬编码(Password Management: Hardcoded Password)
  • 原文地址:https://www.cnblogs.com/jianIsTheBest/p/10591091.html
Copyright © 2011-2022 走看看