アクセス数 累計:000,124,962 昨日:000,000,064 本日:000,000,083
|
|
|
|
【Amazon ランキング:ゲーム - ダウンロード】
|
|
プロパティグリッドではデフォルト値を指定できます。
デフォルト値から変更された項目のみ Bold 表示されます。 |
|
bool、int、String のデフォルト値設定 |
デフォルト値は基本的に DefaultValueAttribute 属性によって設定します。基本的な( int, long, String...)型は直接デフォルト値を指定できます。
[VB]
<System.ComponentModel.DefaultValueAttribute(False)>
<System.ComponentModel.DefaultValueAttribute(0)>
<System.ComponentModel.DefaultValueAttribute("SuraSura")>
[C#]
[System.ComponentModel.DefaultValueAttribute(false)]
[System.ComponentModel.DefaultValueAttribute(0))]
[System.ComponentModel.DefaultValueAttribute("SuraSura")]
|
Color 型のデフォルト値設定 |
構造体やクラスのデフォルト値を設定するには、比較するタイプを指定する必要があります。しかし比較する値は文字列で指定する必要があり少々使いにくいところもあります。
[VB]
<System.ComponentModel.DefaultValueAttribute(GetType(Color), "White")>
[C#]
[System.ComponentModel.DefaultValueAttribute(typeof(Color), "White")]
|
汎用的なデフォルト値設定 |
上記の方法は比較値を文字列で指定しないといけないため、複雑な構造体やクラスの比較には向いていません。そこでデフォルト値判定メソッドを作成することでもっと簡単に、なおかつ柔軟は判定を行うことができます。
判定に使うメソッド名は、ShouldSerialize[プロパティ名] で、値が変更されている場合に true をリターンするようにしてください。
例題で使っているのは Size 構造体ですがこの方法ならどんなオブジェクトでも対応できるはずです。
[VB]
Private Function ShouldSerializeSizeValue() As Boolean
Return Not (_sizeValue.Width = 100 And _sizeValue.Height = 100)
End Function
[C#]
private bool ShouldSerializeSizeValue()
{
return !(_sizeValue.Width == 100 && _sizeValue.Height == 100);
}
|
VB[Class1.vb] |
Public Class Class1
' クラスメンバ変数
Private _boolValue As Boolean = False
Private _intValue As Integer = 0
Private _stringValue As String = "SuraSura"
Private _colorValue As Color = Color.White
Private _sizeValue As Size = New Size(100, 100)
' bool値プロパティ
<System.ComponentModel.Category("すらすら")> _
<System.ComponentModel.Description("bool 値のプロパティ")> _
<System.ComponentModel.DefaultValueAttribute(False)> _
Public Property BoolValue() As Boolean
Get
Return _boolValue
End Get
Set(ByVal value As Boolean)
_boolValue = value
End Set
End Property
' int値プロパティ
<System.ComponentModel.Category("すらすら")> _
<System.ComponentModel.Description("int 値のプロパティ")> _
<System.ComponentModel.DefaultValueAttribute(0)> _
Public Property IntValue() As Integer
Get
Return _intValue
End Get
Set(ByVal value As Integer)
_intValue = value
End Set
End Property
' String値プロパティ
<System.ComponentModel.Category("すらすら")> _
<System.ComponentModel.Description("String 値のプロパティ")> _
<System.ComponentModel.DefaultValueAttribute("SuraSura")> _
Public Property StringValue() As String
Get
Return _stringValue
End Get
Set(ByVal value As String)
_stringValue = value
End Set
End Property
' Color値プロパティ
<System.ComponentModel.Category("すらすら")> _
<System.ComponentModel.Description("Color 値のプロパティ")> _
<System.ComponentModel.DefaultValueAttribute(GetType(Color), "White")> _
Public Property ColorValue() As Color
Get
Return _colorValue
End Get
Set(ByVal value As Color)
_colorValue = value
End Set
End Property
' Size値プロパティ
<System.ComponentModel.Category("すらすら")> _
<System.ComponentModel.Description("Size 値のプロパティ")> _
Public Property SizeValue() As Size
Get
Return _sizeValue
End Get
Set(ByVal value As Size)
_sizeValue = value
End Set
End Property
'Size値のデフォルト判定
Private Function ShouldSerializeSizeValue() As Boolean
Return Not (_sizeValue.Width = 100 And _sizeValue.Height = 100)
End Function
End Class
|
|
C#[Class1.cs] |
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace PropatyGrid_CS
{
public class Class1
{
// クラスメンバ変数
bool _boolValue = false;
int _intValue = 0;
string _stringValue = "SuraSura";
Color _colorValue = Color.White;
Size _sizeValue = new Size(100, 100);
// bool値プロパティ
[System.ComponentModel.Category("すらすら")]
[System.ComponentModel.Description("bool 値プロパティ")]
[System.ComponentModel.DefaultValueAttribute(false)]
public bool BoolValue
{
get { return _boolValue; }
set { _boolValue = value; }
}
// int値プロパティ
[System.ComponentModel.Category("すらすら")]
[System.ComponentModel.Description("int 値プロパティ")]
[System.ComponentModel.DefaultValueAttribute(0)]
public int IntValue
{
get { return _intValue; }
set { _intValue = value; }
}
// String値プロパティ
[System.ComponentModel.Category("すらすら")]
[System.ComponentModel.Description("String 値プロパティ")]
[System.ComponentModel.DefaultValueAttribute("SuraSura")]
public string StringValue
{
get { return _stringValue; }
set { _stringValue = value; }
}
// Color値プロパティ
[System.ComponentModel.Category("すらすら")]
[System.ComponentModel.Description("Color 値プロパティ")]
[System.ComponentModel.DefaultValueAttribute(typeof(Color), "White")]
public Color ColorValue
{
get { return _colorValue; }
set { _colorValue = value; }
}
// Size値プロパティ
[System.ComponentModel.Category("すらすら")]
[System.ComponentModel.Description("Size値プロパティ")]
public Size SizeValue
{
get { return _sizeValue; }
set { _sizeValue = value; }
}
// Size値のデフォルト判定
private bool ShouldSerializeSizeValue()
{
return !(_sizeValue.Width == 100 && _sizeValue.Height == 100);
}
}
}
|
|
|
※このページで紹介しているサンプルコードについて管理者は動作保障をいたしません※
※サンプルコードを使用する場合は、自己責任でお願いします※
|
【楽天 ランキング:スマートフォン - アクセサリー】
|
|
|
|
このサイトはフリーソフトのMerge HTMLで作成されています。
このサイトはリンクフリーです。
|
ページの先頭に戻る |
Copyright© 2010-2015 Jun.Shiozaki All rights reserved. |
|
|
|