- PR -

Webカスタムコントロールの作成について

1
投稿者投稿内容
hideto
会議室デビュー日: 2005/06/16
投稿数: 5
投稿日時: 2005-06-16 16:38
初めて投稿させていただきますhidetoと申します。
よろしくお願いします。
早速ですが、現在DropDownListを継承したMyDropDownListを作成しております。

以下がその単純なソースです。

Option Explicit On '変数の宣言を強制する
Option Strict On '暗黙な型変換を行わない

Imports System
Imports System.ComponentModel
Imports System.Web.UI
Imports System.Web.UI.WebControls

<DefaultProperty("Text"), ToolboxData("<{0}:MyDropDownList0004 runat=server></{0}:MyDropDownList0004>")> Public Class MyDropDownList0004
Inherits System.Web.UI.WebControls.DropDownList

Public Sub New()
Me.Items.Add(CStr(Date.Now))
End Sub
End Class

本当に単純な派生クラスですが、不思議な事に、このコントロールを使用し
IDEにて何らかのプロパティを変更し、実行するとItemsリストが
増加していきます。

プロパティを変更せずに実行すると、問題ありません。
何か根本的に作り方が間違っているのでしょうか?
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-06-16 17:42
hidetoさん、こんばんは。

引用:

IDEにて何らかのプロパティを変更し、実行するとItemsリストが
増加していきます。


てことは、プロパティを変更するたびにコンストラクタ↓が呼ばれているらしい、という事に思い当たりますよね。

引用:

Public Sub New()
Me.Items.Add(CStr(Date.Now))
End Sub



で、この手のコードはどこに書くかといえば、CreateChildControls メソッドをオーバーライドして、その中に書けば良いんじゃないかと思います。
詳しくは、MSDN ライブラリを調べてみて下さい。
hideto
会議室デビュー日: 2005/06/16
投稿数: 5
投稿日時: 2005-06-16 18:16
きくちゃん 様
早々のレスありがとうございます。
おかげさまでうまく動作しました。

しかしながら、画面設計時にはこの情報は反映されないようですね(^^
まだ、CreateChildControlsで書く場合とコンストラクタ(New)内で
書く場合との違いがよくわかりませんが、これから勉強させて頂こうと思います。

本当に有難うございました。
1

スキルアップ/キャリアアップ(JOB@IT)