1.复合控件:将标准控件组合起来
class 你的控件名 : UserControl{}
2.扩展控件:继承于标准控件
class 你的控件名 : Button {}
如果扩展控件,可以手动修改成继承标准控件 但是改完设计器会报错,关掉它,再试一下
此时发现 XXXX.Designer.cs这里面还是报错 把那两行代码删掉不用了即可
因为标准控件不需要设计器设计 直接添加功能 或者修改默认属性就可以了
3.自定义控件:完全地自定义一个控件
class 你的控件名: Control {}
SearchBox 实际是由一个TextBox和一个PictureBox
组合而成。它是一个复合控件。
要点与细节 想要自定义的控件在工具箱里显示需要做以下设置
1工具>>选项>>Windows窗体设计器>>常规>>自动填充工具箱:设为True
1.点击>>生成>>生成解决方案
2.重新打开Form1.cs(如果已经打开了,关闭掉重新打开),在工具箱界面可以看到自己的控件
然后就可以从工具箱看到我们的控件了,我们拖动到窗口上看一下效果
添加了一个 png图标
其他属性也设置一下 比如 SizeMode 设置为CenterImage (居中显示)
图片框的Dock也设置为Fill
文本框Anchor 设为 Left, Right
然后调整下整个窗体的大小 (点击右键 选择窗体名字进行调整)
然后重新生成解决方案 关闭form1.cs 重新打开即可看到效果
最简单的办法就是将各个子控件设置为public 即可直接访问
选中编辑框.在属性里把Modifiers修改为Public, 名字改为 edit
选中图片,属性里 Modifiers也修改为Public ,名字改为btn
像编辑框的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 属性用的就是这个