- - PR -
Web複合コントロール・デザイン時の表示が[クラス名 コントロール名]になってしまう
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-01-21 12:07
こんにちは。
asp.netの開発をしてまして、カスタム(複合)コントロールを作っています。 以前は、@RenderをオーバーライドしてHTMLをゴリゴリ書いていました。しかし、このやり方だと機能が膨らむにつれてコーディング量が非常に増えてしまいました。そこで、ACreateChildControlsをオーバーライドして子サーバコントロールを追加する方法に変更しました。そこで、問題が発生しました。 @のやり方…デザイン時にフォームに配置した時、実行時と同じ見た目で表示される。また、デザイン時にプロパティ変更しても即時反映される。 Aのやり方…デザイン時にフォームに配置した時、”[クラス名 コントロール名]”とだけ表示される。ただし、実行時は正しく表示される。 Aのやり方でも、デザイン時にフォームに配置した時に実行時と同じ見た目で表示されて欲しいのです。子コントロールの数が多すぎたか?と考えてテキストボックス2つだけのサンプルを作ってみましたが、ダメでした。以下にそのコードを記します。 Imports System.ComponentModel Imports System.Web.UI Imports System.Web.UI.WebControls <DefaultProperty("Text"), ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")> Public Class WebCustomControl1 Inherits System.Web.UI.Control Implements INamingContainer Dim _text As String <Bindable(True), Category("Appearance"), DefaultValue("")> _ Property [Text]() As String Get Return _text End Get Set(ByVal Value As String) _text = Value End Set End Property Protected Overrides Sub CreateChildControls() Dim txt1 As New TextBox txt1.Text = [Text] Controls.Add(txt1) Dim txt2 As New TextBox txt1.Text = [Text] Controls.Add(txt1) End Sub End Class 長々と申し訳ありません。あくまでデザイン時だけのことなので、解決しなくてもいいといえばいいのですが・・・ お心当たりがありましたら、どうぞよろしくお願いします。 |
|
投稿日時: 2004-01-21 18:09
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbwlkwalkthroughcreatingcustomwebcontrols.asp
こちらが参考になるかもしれません。カスタムデザイナを作成してDesigner属性で 指定しなければいけないみたいです。 既存のDesigner(PanelDesignerとか)を継承とかしてなんとかならないですかねぇ・・ |
|
投稿日時: 2004-01-21 18:53
ベル様
紹介していただいたページを参考にしたら、できました!! 実はこのページにたどり着いてはいたんですが、もっと楽な方法はないものかと探し廻っているうちに忘れてました。 カスタムコントロールは面倒だからユーザーコントロールにしちゃおうかと悩んでいます。 とても助かりました。ありがとうございます。 |
1