« 07.21 2000株の自社株買い | ココ | 07.21 時をかけてみたい »
2007年7月21日
PropertyGridを操る(3)
続報です。
- (コマンドペイン カスタマイズのための)デザイナ関連の情報
- 何も入力しないとデフォルト、という処理をさせたい
- (コマンドペイン カスタマイズのための)デザイナ関連の情報
.NET コンポーネントのためのカスタム デザイナの作成にある、一般的なタスクの単純化(ref. MSDN)が、コマンドペインにコマンド(動詞)を追加する方法を簡単に示している。
Windows フォームのプログラミング カスタム デザイナ(ref. MSDN2)
より詳細な情報はこちらに。ただし、旧MSDNではなく、2.0以降に対応したバージョンになってるけど。1.1でも使えそうな情報あるし。
- 何も入力しないとデフォルト、という処理をさせたい
文字列として「空("")」を入力したときは数値の0として入力させる、というStringConverterの派生クラスを作って対応可能。
<TypeConverter(GetType(DefaultParamValueConverter))> _
Public Property SomeProperty() As Single
Get
Return _value
End Get
Set(ByVal Value As Single)
_value = Value
End Set
End Property<Security.Permissions.PermissionSet(Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Friend Class DefaultParamValueConverter
Inherits StringConverterPublic Overloads Overrides Function CanConvertTo( _
ByVal context As System.ComponentModel.ITypeDescriptorContext, _
ByVal destinationType As System.Type) As Boolean
If destinationType Is GetType(String) Then Return True
Return MyBase.CanConvertTo(context, destinationType)
End FunctionPublic Overloads Overrides Function ConvertTo( _
ByVal context As System.ComponentModel.ITypeDescriptorContext, _
ByVal culture As System.Globalization.CultureInfo, _
ByVal value As Object, _
ByVal destinationType As System.Type) As Object
If (destinationType Is GetType(String)) AndAlso (CDbl(value) = 0.0#) Then Return ""
Return MyBase.ConvertTo(context, culture, value, destinationType)
End FunctionPublic Overloads Overrides Function CanConvertFrom( _
ByVal context As System.ComponentModel.ITypeDescriptorContext, _
ByVal sourceType As System.Type) As Boolean
Return MyBase.CanConvertFrom(context, sourceType)
End FunctionPublic Overloads Overrides Function ConvertFrom( _
ByVal context As System.ComponentModel.ITypeDescriptorContext, _
ByVal culture As System.Globalization.CultureInfo, _
ByVal value As Object) As Object
Dim tc As TypeConverter = TypeDescriptor.GetConverter(context.PropertyDescriptor.PropertyType)
If CStr(value) = String.Empty Then Return tc.ConvertTo(0.0#, context.PropertyDescriptor.PropertyType)
If tc.CanConvertFrom(context, value.GetType) Then
Return tc.ConvertFrom(context, culture, value)
End If
Return MyBase.ConvertFrom(context, culture, value)
End Function
End Class
オーバーライドしたConvertFrom、ConvertToメソッドで、空文字列に対応したコードを記述する。太字の部分が今回「デフォルト」とした数値0なので、その部分をDefaultValueAttribute属性をcontext.PropertyDescriptorから取得するとかをすれば、デフォルト値なら空文字列を表示し、空文字列が入力されればデフォルト値を設定、とできる。
By ただ at 22:58 カテゴリー ; さんぷるライブラリー , PinMarch Samples , VB, VB .net , プログラミング単語帳 , リンク , プログラミング
« 07.21 2000株の自社株買い |
07月の記事
| 07.21 時をかけてみたい »
トラックバック
このエントリーのトラックバックURL:
http://pinmarch.sakura.ne.jp/mt/mt-tb.cgi/1034
このリストは、次のエントリーを参照しています: PropertyGridを操る(3):
"[...]PinMarch: PropertyGrid?????????(3)[...]"
トラックバック時刻: 2014年7月 1日 06:31