自定义控件分为三种方式:

1.复合控件:将标准控件组合起来

class 你的控件名 : UserControl{}

2.扩展控件:继承于标准控件

class 你的控件名 : Button {}

    如果扩展控件,可以手动修改成继承标准控件 但是改完设计器会报错,关掉它,再试一下

    此时发现 XXXX.Designer.cs这里面还是报错  把那两行代码删掉不用了即可

    因为标准控件不需要设计器设计 直接添加功能 或者修改默认属性就可以了

3.自定义控件:完全地自定义一个控件

class 你的控件名: Control {}

复合控件 搜索框例子


QQ截图20200911010617.bmp

SearchBox 实际是由一个TextBox和一个PictureBox

组合而成。它是一个复合控件。


要点与细节 想要自定义的控件在工具箱里显示需要做以下设置

1工具>>选项>>Windows窗体设计器>>常规>>自动填充工具箱:设为True

具体步骤:

第一步:添加一个用户控件

JR0IT]3U)96[$XWCD`6P2YU.png


QQ截图20200911011746.bmp

QQ截图20200911012157.bmp

QQ截图20200911012420.bmp

此时这个控件还无法在工具箱显示,需要做以下设置:

1.点击>>生成>>生成解决方案

2.重新打开Form1.cs(如果已经打开了,关闭掉重新打开),在工具箱界面可以看到自己的控件

然后就可以从工具箱看到我们的控件了,我们拖动到窗口上看一下效果


QQ截图20200911013312.bmp

接下来我们完善美化一下这个控件

N0$CH}SOC06P3TT{WXBGTXY.png

添加了一个  png图标

so.png

QQ截图20200911014900.jpg


其他属性也设置一下 比如 SizeMode 设置为CenterImage (居中显示)

QQ截图20200911015519.bmp

QQ截图20200911015651.jpg

QQ截图20200911020305.jpg

图片框的Dock也设置为Fill

文本框Anchor 设为 Left, Right


然后调整下整个窗体的大小 (点击右键  选择窗体名字进行调整)

然后重新生成解决方案  关闭form1.cs 重新打开即可看到效果

第二步:使用控件,

最简单的办法就是将各个子控件设置为public 即可直接访问

选中编辑框.在属性里把Modifiers修改为Public, 名字改为 edit

选中图片,属性里 Modifiers也修改为Public ,名字改为btn 

QQ截图20200911022122.jpg

如何指定string类型的编辑器?

像编辑框的Text属性 一点击 出来一个大框让我们填写  这种效果如何做到?

可以找到TextBox转到定义 看一下他的Text即可

其他常用的几个写法:

    [DefaultEvent("Click")] //指定组件的默认事件
    [DefaultProperty("Text")] //指定组件的默认属性




    [DefaultValue(false)] //指定属性的默认值。
    [Browsable(true)]   //指定某一属性或事件是否应在“属性”窗口中显示。
    [EditorBrowsable(EditorBrowsableState.Always)] //指定某一属性或方法在编辑器中可见。 此类不能被继承。  //该属性或方法在编辑器中始终是可浏览的。
    [EditorBrowsable(EditorBrowsableState.Never)]  //指定某一属性或方法在编辑器中可见。 此类不能被继承。  //该属性或方法始终不能在编辑器中浏览。
    [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
    // 指定用于更改属性的编辑器。 此类不能被继承。Text 属性用的就是这个







其他:


    [DllImport("jiemi.dll")]  //DLL导入

    [Browsable(true)]   //指定某一属性或事件是否应在“属性”窗口中显示。

    [DefaultValue(false)] //指定属性的默认值。

    [DefaultValue('\0')] //指定属性的默认值。

    [EditorBrowsable(EditorBrowsableState.Always)] //指定某一属性或方法在编辑器中可见。 此类不能被继承。  //该属性或方法在编辑器中始终是可浏览的。
    [EditorBrowsable(EditorBrowsableState.Never)]  //指定某一属性或方法在编辑器中可见。 此类不能被继承。  //该属性或方法始终不能在编辑器中浏览。

    [Localizable(true)] //指定是否应本地化某一属性。 此类不能被继承。

    [RefreshProperties(RefreshProperties.Repaint)]//     指示在关联属性值更改时应刷新属性网格。 此类不能被继承

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]  //指定在设计时序列化组件上的属性时所使用的持久性类型。

    [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
    // 指定用于更改属性的编辑器。 此类不能被继承。Text 属性用的就是这个



相关推荐

c#控件开发:调用父类属性法 并 隐藏父类默认属性

比如 Textbox 再属性编辑器里隐藏掉他默认的全部属性,然后全部自己定义。 [Browsable(false)] public bool WordWrap { get { retu

通达信涨停板颜色设置为紫色或自定义颜色

标注涨停板指标:(颜色可以自己修改)我习惯的设置为:涨停:实心红色跌停:实心绿色炸板:黄色半实心(最高价是涨停价 但是没涨停)代码如下:其中前两行是均线后面的三段 最后的 colorxxxx 是颜色

zblog使用主题或插进行自定义模块创建

function demo_create_functions() { global $zbp; if(!isset($zbp->modulesbyfilename['demo_

SOLIDWORKS 添加自定义按钮,草图的 剪裁,延伸,延长

剪裁,修剪延伸,延长

zblog自定义模块的创建与动更新(主题或插专用)

zblog的自定义模块分为数据库模块和文件型模块分别是以数据库的形式储存内容和已文件的形式储存内容数据库模块创建方法:创建模块,下面以创建标签云为例:在插件include.php里主题启动时,执行以下

通达信导航栏修改标题栏自定义

标题栏文件:RibbonBar.dax全景图文件:Padbar.daxexe调用(调用指定目录下的exe文件)http://www.treeid/exe:chajian\\zhangtingchi.ex

通达信软重启或重新登录后,自定义的指标动恢到原来默认的

每次重启 发现原来设置的主图指标没了 又变回原来系统自带的指标原因:解决方法:不要选择 叠加其他指标 而是直接 选择主图指标 然后如果有必要的话 可以在自己编写的指标里 额外添加上 MA5MA10M

宝塔面板Nginx日志文修改为自定义 和 log_format详解

第一步:设置log_format打开/www/server/nginx/conf/nginx.conf 在里面添加:log_format zbloglog '$remote_addr [$ti

chrome浏览器自定义css 屏蔽百度热搜榜

首先建议大家下载一个 "山寨"的chrome浏览器之所以我叫他"山寨"是因为他使用的chrome内核开发 并且chrome有的它都有,外观也几乎一模一样之所以用

帝国cms正文关键词替换 提交前自定义处理函数用法

比如 文章正文怎么把img图片的alt替换为文章标题?在 e/class/userfun.php 里面增加://替换正文IMG里的ALT内容 function user_imgalt($mid,$f