[转]如何让.Net控件在设计时InitializeComponent()中不生成相关代码
2007-07-26 22:50
567 查看
[ 来源]http://www.joyblog.cn/article.asp?id=47
组件的一些公共属性不希望被VS在设计时加到InitializeComponent()方法中怎么处理呢?我试过了,将属性加上[Browsable(false)]也不行。
我的代码如下:
public class CommunicationTypeComboBox : ComboBox
将控件放到窗体上,VS回自动在InitializeComponent()方法中加入一下代码。粗体部分。
//
// cmbCommunicationType
//
this.cmbCommunicationType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCommunicationType.FormattingEnabled = true;
this.cmbCommunicationType.Location = new System.Drawing.Point(124, 66);
this.cmbCommunicationType.Name = "cmbCommunicationType";
this.cmbCommunicationType.SelectedItem = Xunmei.Door.CommunicationType.SerialPort;
this.cmbCommunicationType.Size = new System.Drawing.Size(121, 20);
this.cmbCommunicationType.TabIndex = 2;
this.cmbCommunicationType.SelectedIndexChanged += new System.EventHandler(this.cmbCommunicationType_SelectedIndexChanged);
随着编辑次数的增会变成这样。除了不在构造函数中增加项以外,有没有办法解决这个问题?
经过几天的努力终于找到了DesignOnlyAttribute 类 。
指定某个属性 (Property) 是否只能在设计时设置。
通过将 DesignOnlyAttribute 设置为 true 进行标记的成员只能在设计时进行设置。通常,这些属性 (Property) 只能在设计时存在,并且不对应于运行时对象上的某个实际属性 (Property)。
没有属性 (Attribute) 或通过将 DesignOnlyAttribute 设置为 false 进行标记的成员可以在运行时进行设置。默认为 false。
将CommunicationTypeComboBox的Items属性加上DesignOnlyAttribute 就可以完美解决该问题。
[DesignOnly(false)]
public new ObjectCollection Items
2006-9-15 日更新
终极及解决方案
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public new ObjectCollection Items
组件的一些公共属性不希望被VS在设计时加到InitializeComponent()方法中怎么处理呢?我试过了,将属性加上[Browsable(false)]也不行。
我的代码如下:
public class CommunicationTypeComboBox : ComboBox
将控件放到窗体上,VS回自动在InitializeComponent()方法中加入一下代码。粗体部分。
//
// cmbCommunicationType
//
this.cmbCommunicationType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCommunicationType.FormattingEnabled = true;
this.cmbCommunicationType.Location = new System.Drawing.Point(124, 66);
this.cmbCommunicationType.Name = "cmbCommunicationType";
this.cmbCommunicationType.SelectedItem = Xunmei.Door.CommunicationType.SerialPort;
this.cmbCommunicationType.Size = new System.Drawing.Size(121, 20);
this.cmbCommunicationType.TabIndex = 2;
this.cmbCommunicationType.SelectedIndexChanged += new System.EventHandler(this.cmbCommunicationType_SelectedIndexChanged);
随着编辑次数的增会变成这样。除了不在构造函数中增加项以外,有没有办法解决这个问题?
经过几天的努力终于找到了DesignOnlyAttribute 类 。
指定某个属性 (Property) 是否只能在设计时设置。
通过将 DesignOnlyAttribute 设置为 true 进行标记的成员只能在设计时进行设置。通常,这些属性 (Property) 只能在设计时存在,并且不对应于运行时对象上的某个实际属性 (Property)。
没有属性 (Attribute) 或通过将 DesignOnlyAttribute 设置为 false 进行标记的成员可以在运行时进行设置。默认为 false。
将CommunicationTypeComboBox的Items属性加上DesignOnlyAttribute 就可以完美解决该问题。
[DesignOnly(false)]
public new ObjectCollection Items
2006-9-15 日更新
终极及解决方案
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public new ObjectCollection Items
相关文章推荐
- 如何让.Net控件在设计时InitializeComponent()中不生成相关代码
- 如何让.Net控件在设计时InitializeComponent()中不生成相关代码
- 如何让.Net控件在设计时InitializeComponent()中不生成相关代码(C#组件开发)
- 如何让.Net控件在设计时InitializeComponent()中不生成相关代码
- Form:解决,自定义控件重写Text属性时,设计时不能在InitializeComponent中生成代码的问题
- 如何让设计器不生成自定义控件属性的代码
- userControl --设置是否在InitializeComponent函数中生成相应的代码
- 自动生成Android ContentProvider、Database相关代码
- 开发ASP.NET如何将App_Code文件夹中的共享代码配置生成多个Dll
- 如何使用CodeSmith批量生成代码
- 转载:Silverlight客户端代码如何生成的----MS RIA Services Framework白皮书简译
- 如何使用LLBLGen Pro v2.6来生成代码
- 如何在程序中执行动态生成的Delphi代码
- 动态生成的Web软件 应该如何设计???
- SpringBoot学习-如何使用mybatis-generator-maven-plugin自动生成代码
- 如何优化代码节约系统资源解决重复实例化对象的问题——神奇的单例模式(C#设计模式)
- 【php相关知识】如何生成一个库的php文档 ?
- C代码文件如何生成Dll动态链接库
- 如何高效地使用XCodeFactory自动生成的数据层代码(二)
- 如何高效的学习 TensorFlow 代码? 以及TensorFlow相关的论文