0

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

我尝试了以下方法:

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

我的问题:如何初始化我的控件属性?

PS:我知道如何设置我的控件的属性。我使用以下代码在智能标签上运行良好:

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

编辑

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

4

2 回答 2

1
[ToolboxData("<{0}:MyControl runat=\"server\" Prop1=\"Value\" />")]
public class MyControl
{
}
于 2009-10-31T11:12:32.030 回答
-1
descriptor.SetValue("Value");

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

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

于 2009-10-31T11:18:52.360 回答