如何在设计时初始化我的Web控件属性?

时间:2009-10-31 10:31:26

标签: c# .net asp.net visual-studio design-time

我需要一种方法来初始化我的Web控件的属性,当它被放置在设计器区域时。作为“初始化”我的意思是:如果我的控件具有属性Prop1。我需要为Prop1分配一个值,我需要将此值保存在ASPx上。

我尝试了以下内容:

  1. 在我的ControlDesigner上实现InitializeNewComponent:永远不会调用此方法。这似乎是一个错误。
  2. 在我的ControlDesigner上实现Initialize:调用此方法,但Visual Studio不允许在此阶段更改控件的属性。
  3. 为IComponentChangeService.ComponentAdded创建一个处理程序(每次创建任何控件时都应该调用它)。永远不会调用此处理程序。
  4. 我的问题:如何初始化我的控件属性?

    PS:我知道如何设置我的控件的属性。我使用以下代码在智能标记上正常工作:

    PropertyDescriptor descriptor = TypeDescriptor.GetProperties(this.Component)["Prop1"];
    descriptor.SetValue("Value");
    

    修改

    我忘了提到我不能使用ToolBoxData,因为我需要进行处理以确定属性的值

2 个答案:

答案 0 :(得分:1)

[ToolboxData("<{0}:MyControl runat=\"server\" Prop1=\"Value\" />")]
public class MyControl
{
}

答案 1 :(得分:-1)

descriptor.SetValue("Value");

没有这样的方法。 MSDN 我也不太明白你为什么用反射来设置已知类型的属性?

也许这可以帮到你一点:A Crash Course on ASP.NET Control Development: Design-Time Features and Capabilities