【C#】winform自定义控件在工具箱中显示和属性在属性面板中显示

在开发自定义控件件时,有好些Design属性是要使用的,如ToolboxItem, ToolboxBitmap, Category, Description等等,不知道这些属性其实也可以将控件搞出来,不过,知道了,会令事件更加简单,令控件更加专业和实用。有时,不知道用法,会令到项目的其他同事好烦,因为这个控件是你提供的。下面对一些常用的Design属性做一个简单的生产介绍。

1. ToolboxItem

有没有试过写一个用户控件后,想它不出现在工具箱中,当然有,有时候是控件的Designer部分没有写好或没写,有时候是控件一拖出来就报错,有时候是内部使用的控件,不想别人一引用DLL就出现控件。其它设置方法可以很简单。

ToolboxItem(false)]
public class MyPanel : UserControl
{
}

这样就可以了。“可恶”的用户控件就自动隐藏了,不出现在工具箱中。不过,如果你不知道这样的话,可以会引来一大堆的烦事。

2. ToolboxBitmap

写好一个用户控件后,在工具箱中出来的是一个蓝色的齿轮,这就不是很漂亮了,也不能够直观地表达自己的意图。如果更不幸的你的控件的名称好难认的话,其它的开发者会很麻烦的。怎样才能让用户控件在工具箱中显示不同的图标呢?

ToolboxBitmap(typeof(System.Windows.Forms.Panel))]
public class MyPanel : UserControl
{
}

这样就可以了,表示你所做的用户控件使用的图标是Panel的图标。
如果不想用系统的图标,要使用自己的图标,可以这样

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

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

3. Category与Description

[Category("Appearance"), Description("阴影色")]
public System.Drawing.Color ShadowColor { get {} set {} }

这两个是经常都会写在一起的属性,Category表示类型,如属性框中所显示的外观,布局等,当然,你可以自己写一个,叫“自定义属性”,而Description就是这个属性的描述,用来说明属性有什么用途。这两个的设置相对都比较简单,可以说,一看就知道,不过提一下,Appearance是特殊的词,在属性面板中,它就是外观一栏。

4. DefaultValue

[DefaultValue(typeof(Color), "DarkGray")]
public System.Drawing.Color ShadowColor { get {} set {} }

用于设置默认的值,对于string,bool,int,可以直接写出来,如[DefaultValue(10)],这是可以的,不过,不是这三种类型的话,就比较麻烦,一定要先转化为string才能设置成功。如上面的DarkGray,这是系统定义的颜色,这还是比较好处理的。不过,如果是一些自定义的颜色,如颜色是128,0,128,你应该将128转为16进制,写成0x800080,前缀0x是一定要加的。最后就这样
[DefaultValue(typeof(Color), "0x800080")]

5. Browsable

 public partial class MyTextBox : TextBox
 {
        public MyTextBox()
        {
            var s = DefaultText;
            InitializeComponent();
        }

        [Browsable(true)]
        public string DefaultText {get;set;}
 }

表示,将在属性面板中显示这个属性。
在这里插入图片描述
如果设置为false,将不会显示(但是仍然会在对应的*.Designer.cs中进行序列化),如:

this.myTextBox1.DefaultText = null;//仍然会序列化
this.myTextBox1.Location = new System.Drawing.Point(476, 151);
this.myTextBox1.Name = "myTextBox1";
this.myTextBox1.Size = new System.Drawing.Size(100, 21);
this.myTextBox1.TabIndex = 0;

6. DesignerSerializationVisibility

表示,是否在*.Designer.cs文件中将设置的代码写出来,也就是是否要实现序列化。默认为
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]表示需要实现序列化。
如果设置为hidden:

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public List<Person> Persons { get; set; }

将不会被序列化:
在这里插入图片描述
如果自定义控件中有些属性不需要显示在属性面板或者不需要序列化时,建议hidden掉。


参考:winform 自定义控件属性在属性面板中显示的问题

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C# WinForm 添加 Microsoft Forms 2.0 Frame 的步骤如下: 1. 打开 Visual Studio,创建一个新的 Windows 窗体应用程序。 2. 在工具箱找到“COM”选项卡,并在其找到“Microsoft Forms 2.0 Frame”控件。 3. 将“Microsoft Forms 2.0 Frame”控件工具箱动到窗体设计器。 4. 在窗体设计器“Microsoft Forms 2.0 Frame”控件,然后打开属性窗口。 5. 在属性窗口设置“BorderStyle”属性为“None”,这样就可以隐藏控件的边框。 6. 在代码,你可以使用以下代码来操作 Microsoft Forms 2.0 Frame 控件: ``` // 创建 Microsoft Forms 2.0 Frame 控件对象 AxHost.State state = new AxHost.State(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.axMsFormsFrame1 = new AxMSForms.AxFrame(); ((System.ComponentModel.ISupportInitialize)(this.axMsFormsFrame1)).BeginInit(); this.SuspendLayout(); // 设置 Microsoft Forms 2.0 Frame 控件属性 this.axMsFormsFrame1.Enabled = true; this.axMsFormsFrame1.Location = new System.Drawing.Point(12, 12); this.axMsFormsFrame1.Name = "axMsFormsFrame1"; this.axMsFormsFrame1.OcxState = state; this.axMsFormsFrame1.Size = new System.Drawing.Size(260, 210); this.axMsFormsFrame1.TabIndex = 0; // 将 Microsoft Forms 2.0 Frame 控件添加到窗体 this.Controls.Add(this.axMsFormsFrame1); ((System.ComponentModel.ISupportInitialize)(this.axMsFormsFrame1)).EndInit(); this.ResumeLayout(false); ``` 以上代码,axMsFormsFrame1 是你在窗体设计器添加的 Microsoft Forms 2.0 Frame 控件的名称,你可以根据自己的实际情况进行修改。 请注意,Microsoft Forms 2.0 Frame 控件需要在计算机上安装 Microsoft Office 才能使用。如果你的计算机上没有安装 Microsoft Office,你需要先安装 Microsoft Office 后才能使用 Microsoft Forms 2.0 Frame 控件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值