如何为派生控件的属性设置默认值

本文关键字:属性 设置 默认值 控件 派生 | 更新日期: 2023-09-27 18:21:56

我从ToolStripComboBox派生,以便创建一个封装百分比拾取下拉列表的组合框。目标是在派生控件中进行所有验证和字符串解析。当所选百分比发生更改时,父级只会收到一个事件,并且它可以访问一个公共整数来获取和设置百分比。

我遇到的问题是,在我放置派生控件的父控件的设计器文件中,它不断使用ComboBox.Items.AddRange方法添加一整套字符串。在派生控件的构造函数中,我有以下内容:

foreach (int i in percentages)
{
    ComboBox.Items.Add(String.Format("{0}%", i));
}

随着时间的推移,这些值在设计器文件中积累了很多次。我不知道如何隐藏Items属性,因为它不是虚拟的。我想抑制我的设计器文件的泛滥。

我的设计器文件示例:

this.zoom_cbo.Items.AddRange(new object[] {
"10%",
"25%",
"50%",
"75%",
"100%",
"150%",
"200%",
"300%",
"400%",
"600%",
"800%",
"1600%",
"10%",
"25%",
"50%",
"75%",
"100%",
"150%",
"200%",
"300%",
"400%",
"600%",
"800%",
"1600%",
"10%",
"25%",
"50%",
"75%",
"100%",
"150%",
"200%",
"300%",
"400%",
"600%",
"800%",
"1600%",
"10%",
"25%",
"50%",
"75%",
"100%",
"150%",
"200%",
"300%",
"400%",
"600%",
"800%",
"1600%",
"10%",
"25%",
"50%",
"75%",
"100%",
"150%",
"200%",
"300%",
"400%",
"600%",
"800%",
"1600%",
"10%",
"25%",
"50%",
"75%",
"100%",
"150%",
"200%",
"300%",
"400%",
"600%",
"800%",
"1600%",
"10%",
"25%",
"50%",
"75%",
"100%",
"150%",
"200%",
"300%",
"400%",
"600%",
"800%",
"1600%"});

如何为派生控件的属性设置默认值

由于这是一个派生列表,用户只是从中选择,请尝试将其添加到派生组合框中,以防止项目的序列化:

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new ObjectCollection Items
{
  get { return ((ComboBox)this).Items; }
}

也许您应该只在不处于设计模式时进行添加,例如:

if (this.DesignMode)
{
  // design time only stuff
}
else
{
  // runtime only stuff.
  foreach (int i in percentages)
  {
    ComboBox.Items.Add(String.Format("{0}%", i));
  }
}