- PR -

ユーザコントロールの独自プロパティについて

1
投稿者投稿内容
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2007-04-06 12:02
こんにちは。
いつも参考にさせていただいております。

OS:winXP SP2
ASP.NET:2.0 C#

現在、ユーザコントロールを作成しているのですが、
独自に作成したプロパティの初期値等が
貼り付けた先で表示されない現象が起こっています。

Categoryについては問題なくカテゴリ分けされています。
DescriptionとDefaultValueが反映されません。

下記の方法以外の実装方法があるのでしょうか?

ご教授のほどお願いいたします。

【ユーザコントロール画面項目】
TxtNo:TextBox(System.Web.UI.WebControls)
そのほか、いくつかのHiddenのTextBox(System.Web.UI.WebControls)

【コード】
using System.ComponentModel;

[Description("テスト説明"),Category("カテゴリテスト"),DefaultValue("テスト値")]
public string Value
{
set
{
this.TxtCd.Text = value;
}
get
{
return this.TxtCd.Text;
}
}


未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-04-06 16:26
DefaultValueはデザイナのプロパティグリッドでの規定値を設定するだけの物のようです。
(リファレンスには紛らわしい書き方されてるけど。)
ですので初期値は別途、設定しないといけません。(コンストラクタに書くのが一番早いかな?)

Descriptionが反映されないというのはプロパティグリッドで表示されないということですか?
コードヒントに表示したいなら<summary>タグの方に書かないとなダメですけど。

[ メッセージ編集済み 編集者: 未記入 編集日時 2007-04-06 16:45 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-06 18:08
引用:

うたさんの書き込み (2007-04-06 12:02) より:

現在、ユーザコントロールを作成しているのですが、独自に作成したプロパティの初期値等が貼り付けた先で表示されない現象が起こっています。

引用:

DefaultValueが反映されません。


「初期値」 なのか 「既定値」 なのかどちらでしょうか? (混同してらっしゃいませんか?)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29801&forum=7

引用:

{
  this.TxtCd.Text = value;
}
get
{
  return this.TxtCd.Text;
}


コンテナ内のコントロールの値の 「既定値」 は、正常に変えられないかもしれません。
Visual Studio の場合ですが、プロパティ ウィンドウの値が Bold 書体になったままになることがあります。

Description 属性については、わかりません。
こちらに関しては、IDE の都合に関係なく普通にできそうですけどね。
どのように確認したのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2007-04-09 10:41
引用:

未記入さんの書き込み (2007-04-06 16:26) より:
DefaultValueはデザイナのプロパティグリッドでの規定値を設定するだけの物のようです。
(リファレンスには紛らわしい書き方されてるけど。)
ですので初期値は別途、設定しないといけません。(コンストラクタに書くのが一番早いかな?)

Descriptionが反映されないというのはプロパティグリッドで表示されないということですか?
コードヒントに表示したいなら<summary>タグの方に書かないとなダメですけど。

[ メッセージ編集済み 編集者: 未記入 編集日時 2007-04-06 16:45 ]



未記入さん
DefaultValueについてはデザイナのプロパティグリッドでの既定値を設定するのが目的です。

Descriptionについてはプロパティグリッドの説明として表示させたいです。

じゃんぬねっとさん
「初期値」と「既定値」を混同していました。
ご指摘ありがとうございます。

確認方法としてはデザインにて作成したコントロールを貼り付け、
プロパティグリッドを確認するといった方法をとりました。
未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-04-09 12:11
うたさんゴメンなさい。
Windowsアプリケーションと同じように使えるものだと思って回答してました。
ASP(Webサイトプロジェクト)で試してみたが、普通にやっただけぢゃダメぽぃ

参考
(いまいち判りにくいけど、コンパイルしてアセンブリに組み込まないとSystem.ComponentModelの定義はデザイナから見えない?)
簡単にやる方法としてはユーザコントロールだけを別プロジェクトにしてDllを単独で作成してWEBサイトに参照追加すると見えるようになる。
・・・なったけどコレを綺麗に業務プロジェクトに追加する方法はよくわからない・・・。ゴメン
うた
常連さん
会議室デビュー日: 2006/04/08
投稿数: 23
投稿日時: 2007-05-01 15:51
未記入さん
今回は見送る方向で決定しました。
いろいろとご教授ありがとうございました。

皆様
有益な情報ありがとうございました。

これでスレを終了させていただきます。
ありがとうございました。
1

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