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 リフレクションを使用して既知の型のプロパティを設定する理由もよくわかりません。

多分これはあなたに少し役立つかもしれません: ASP.NET コントロール開発のクラッシュ コース: デザイン時の機能と機能

于 2009-10-31T11:18:52.360 に答える