すらすらプログラマーへのお問い合わせ
すらすらのブログ
アクセス数  累計:000,124,962  昨日:000,000,064  本日:000,000,083
Loading
プロパティグリッド
.NET プログラミング
プロパティグリッド
印刷
リストボックス
スレッド
リストビュー
インストーラー
やってみよう!

できるVisual Studio 2015 Windows /Android/iOS アプリ対応

独習C# 第3版

VisualBasic2013パーフェクトマスター (Perfect Master SERIES)

プログラミング.NET Framework 第4版 (Microsoft Press)

VisualBasic2013逆引き大全555の極意

猫でもわかるWindowsプログラミング 第4版 (猫でもわかるプログラミング)

VisualC#2013逆引き大全555の極意

デフォルト値の設定 最終更新:2010/07/15
【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.