- 題名: ユーザーコントロールの作成について
- 日時: 2011/04/05 11:22:55
- ID: 28394
- この記事の返信元:
- (なし)
- この記事への返信:
- [28401] Re[1]: ユーザーコントロールの作成について2011/04/06 9:11:31
- ツリーを表示
■No28417に返信(ASP.NET素人さんの記事)
ユーザーコントロールはUserControlクラスの派生クラスで、ascxファイルのことを
言います。ASP.NET素人さんの言われているFWTextBoxNumericはTextBoxコントロール
の派生クラスで、カスタムコントロールと言います。
ASP.NET素人さんとshuさんのやり取りを拝見しますと、ASP.NET素人さんはページに
カスタムコントロールを配置し、デザイナのプロパティでカスタムコントロールのマ
ークアップを編集したいということですか。
Integer型、String型のプリミティブ型のプロパティであれば、クラスにプロパティ
を用意するだけで、デザイナのプロパティでマークアップを編集するようにできます
よね。今回はImeModeList型のプロパティがあるということですね。ImeModeListとい
う名称から推測するとコレクションでしょうか。
ImeModeListのオブジェクトをプリミティブ型で公開するようにするとよいのではな
いでしょうか。
public String ImeMode {
get {
return String.Join("," , this._imeMode.ToArray());
}
set {
this._imeMode.Add(String.Split ...
}
}
あるいはImeModeList型とString型の変換を行うTypeConverterクラスの派生クラスを
作成し、TypeConverterAttributeで関連付けるというやり方も考えられます。
[TypeConverter(typeof(ImeModeListConverter))]
public ImeModeList ImeMode
{
get { return this._imeMode; }
set { this._imeMode = value; }
}
class ImeModeListConverter : TypeConverter {
public override bool CanConvertFrom(ITypeDescriptorContext context,
Type sourceType) {
return sourceType == typeof(string);
}
public override object ConvertFrom(ITypeDescriptorContext context,
CultureInfo culture, object value) {
return new ImeModeList((string)value);
}
public override object ConvertTo(ITypeDescriptorContext context,
CultureInfo culture, object value, Type destinationType) {
return string.Join(",", ((ImeModeList)value).ToArray());
}
}
コードはイメージでしかありません。ご注意ください。
分類:[ASP.NET]
VS2008 C# にてWeb用のユーザーコントロールを作成しております。
ユーザーコントロールのWebのページに貼り付けてデザイナでプロパティ
を変更したらマークアップの方にも反映させたいのですが、どうですれば
よいかご教示願います。
それとも自分で入力して追加するしかないのでしょうか?