c#自定义控件属性面板及选择资源设置

因为要做流体布局,但两个控件没办法组合,就做自定义控件。这个控件需要一个text设置文本,一个pic设置图片显示,图片通过选择获取,在属性面板里能够修改。

添加用户控件之后就可以自己随意设置控件内容了,这里说下关于属性的一些设置。

  1. 自定义控件显示在工具箱的开关:
    将true改为false就可以不显示了。

    [ToolboxItem(true)]
    public partial class UserControl1 : UserControl
  2. 自定义控件在工具箱中的图标显示:
    可以使用已有控件的图标,

    1 [ToolboxBitmap(typeof(System.Windows.Forms.PictureBox))]
    2 public partial class UserControl1 : UserControl

    如果不想用系统的图标,要使用自己的图标,可以这样(这部分未测试,源于参考文章)

    1 [ToolboxBitmap(typeof(MyPanel), "WindowsApplication1.Images.MyPanel.bmp")]
    2 public class MyPanel : UserControl

    不过,一定要注意路径,WindowsApplication1.Images.MyPanel.bmp表示,解决方案是WindowsApplication1,目录是Images,文件名是MyPanel.bmp,同时,这个图片必须是“嵌入的资源”(点击文件,右键,属性,有一个文件属性,其中,在生成操作中,可以选择"嵌入的资源")

  3. 自定义控件在属性面板上的显示开关:

    1 [Browsable(true)]
    2 [Description("属性描述"), Category("属性名称"), DefaultValue("属性默认值,重置时使用")]
    3 public override string Text
    4         {
    5             get { return label1.Text; }
    6             set { label1.Text = value; }
    7         }  

    (摘抄自参考文章)用于设置默认的值,对于string,bool,int,可以直接写出来,如[DefaultValue(10)],这是可以的,不过,不是这三种类型的话,就比较麻烦,一定要先转化为string才能设置成功。如上面的DarkGray,这是系统定义的颜色,这还是比较好处理的。不过,如果是一些自定义的颜色,如颜色是128,0,128,你应该将128转为16进制,写成0x800080,前缀0x是一定要加的。最后就这样[DefaultValue(typeof(Color), "0x800080")]
    还有一种[DefaultValue(typeof(Color), "0, 70, 213")]
    如果是字体的话需要[DefaultValue(typeof(Font), "宋体, 9pt")]
    这两种特殊情况三种方法本人均未测试。

  4. 自定义控件属性选择资源:
    如果自定义的属性不是文本等输入,是图片之类的就需要类似于picturebox的资源选择了,所以在设置属性的时候使用文件类型来定义,如选择图片的例下

     1 [Browsable(true)]
     2 [Description("设置控件图片"), Category("setPic"), DefaultValue(" ")]
     3 public Bitmap setPic
     4         {
     5             get { return (Bitmap)this.pictureBox1.Image; }
     6             set
     7             {
     8                this.pictureBox1.Image = value;
     9             }
    10         }        

    这样的话就会在属性面板的设置中出现选择资源的对话框来选择。

  5. 自定义控件属性选择下拉列表:

    在定义属性的时候需要先设置好枚举值,通过枚举来定义属性,如例下

     1 public enum indexEnum
     2         {
     3             a,
     4             b,
     5             c
     6         }
     7 public indexEnum index;
     8 [Browsable(true)]
     9 [Description("设置index"), Category("Index"), DefaultValue("属性默认值")]
    10 public indexEnum Index
    11         {
    12             get { return index; }
    13             set { index = value; }
    14         }

附:

参考文章:常用Design属性 【C#】妈妈再也不用担心自定义控件如何给特殊类型的属性添加默认值了,附自定义GroupBox一枚

时间: 2024-10-08 10:14:30

c#自定义控件属性面板及选择资源设置的相关文章

自定义控件属性

demo:defineView 1.如何自定义控件属性? 2.如何动态创建组件? 3.接口回调思想 设计需要的属性 values新建attrs.xml.通过<declare-styleable>来告诉系统这是自定义的属性 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name ="Topbar"> <

Style3D属性面板的开发指南

类结构简介 我已经封装成了框架式程序,有固定可靠的数据流程,开发者只需完成简单的几个框架属性的编写,即可轻松完成子对话框选项卡的设计,无需手动管理物体列表的变化或者选项卡的切换.可以按照普通对话框一样任意添加各种控件,数据交换也是通过基类中Frame,Doc,三个View的指针即可实现,无需手动赋值. 两个基类: class MeshPropertyBase { CPiFrame* m_pPiFrame; CModelView* m_pModelView; CPatView* m_pPatVie

android 自定义控件属性(TypedArray以及attrs解释)

最近在捣鼓android 自定义控件属性,学到了TypedArray以及attrs.在这其中看了一篇大神博客Android 深入理解Android中的自定义属性.我就更加深入学习力一番.我就沿着这个学习,讲一下流程吧,后续一篇还有应用. 1.attrs文件编写 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="titleText" forma

XCode属性面板使用说明

Xcode 中Interface Builder 工具 是一个功能强大的“所见即所得”开发工具.本文主要介绍属性面板 和  对象库面板 对象库面板: 提供了所有Cocoa Touch 库给我们定义好的界面组件,包括 View 组件和 Controller 组件(所有名字带 xxxxController 的组件). 使用如下图: 默认列表显示                方格显示 对象库中组件较多,为了查找方便,底部提供了搜索栏,功能强大,一般只要输入关键的几个字母,就能快速找到你需要的组件.

android 自定义控件属性

控件属性想必大家都知道如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent&

自定义控件属性的获取

在资源文件目录下新建attrs.xml文件,声明需要的属性 <?xml version="1.0" encoding="utf-8"?> <resources><!-- resource是跟标签,可以在里面定义若干个declare-styleable --> <declare-styleable name="custom_view"><!-- name定义了变量的名称 --> <a

Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用场景需要自定义绘制一些控件满足特定的需求,比如仪器仪表.组态等,而且需要直接用户通过属性设计的形式生成导出控件及界面数据,下次导入使用,要想从内置控件或者自定义控件拿到对应的属性方法等,首先联想到的就是反射,Qt反射对应的类叫QMetaObject,着实强大,其实整个Qt开发框架也是超级强大的,本人自从转

android自定义控件属性

有两种方法为自定义的控件设置属性 . 来自为知笔记(Wiz) android自定义控件属性,布布扣,bubuko.com

VS2010 项目属性的默认包含路径设置方法

VS2010 项目属性的默认包含路径设置方法 分类: c++小技巧2014-01-10 10:16 1358人阅读 评论(0) 收藏 举报 c++ 有两种方法可以设置vs2010的默认包含路径 方法一: 点击“视图->属性管理器”,在打开的属性管理器中选择Microsoft.Cpp.Win32.user打开 打开后将出现如下图所示: 这时候就可以设置默认目录了. 方法二: 打开 C:\Users\Administrator\AppData\Local\Microsoft\MSBuild\v4.0