共用方式為


ExpandableObjectConverter 類別

定義

提供型別轉換子將可擴展的物件與其他各種表示相互轉換。

public ref class ExpandableObjectConverter : System::ComponentModel::TypeConverter
public class ExpandableObjectConverter : System.ComponentModel.TypeConverter
type ExpandableObjectConverter = class
    inherit TypeConverter
Public Class ExpandableObjectConverter
Inherits TypeConverter
繼承
ExpandableObjectConverter
衍生

範例

下列程式代碼範例會將 類型的 Margins 變數轉換成字串變數。

String^ strM = "1,2,3,4";
System::Drawing::Printing::Margins^ m = gcnew System::Drawing::Printing::Margins( 1,2,3,4 );
Console::WriteLine( TypeDescriptor::GetConverter( strM )->CanConvertTo( System::Drawing::Printing::Margins::typeid ) );
Console::WriteLine( TypeDescriptor::GetConverter( m )->ConvertToString( m ) );
string strM="1,2,3,4";
System.Drawing.Printing.Margins  m= new System.Drawing.Printing.Margins(1,2,3,4);
Console.WriteLine(TypeDescriptor.GetConverter(strM).CanConvertTo(typeof(System.Drawing.Printing.Margins))); 
Console.WriteLine(TypeDescriptor.GetConverter(m).ConvertToString(m));
Dim strM As String
strM = "1,2,3,4"
            Dim m As New System.Drawing.Printing.Margins(1, 2, 3, 4)
Console.WriteLine(TypeDescriptor.GetConverter(strM).CanConvertTo(GetType(System.Drawing.Printing.Margins)))
Console.WriteLine(TypeDescriptor.GetConverter(m).ConvertToString(m))

下列程式代碼範例示範如何使用 NotifyParentPropertyAttributeExpandableObjectConverter 類別,在自定義控件上建立可展開的屬性。 此程式代碼範例是提供給 類別之較大範例的 NotifyParentPropertyAttribute 一部分。

[TypeConverter(typeof(BorderAppearanceConverter))]
public class BorderAppearance
{
    private int borderSizeValue = 1;
    private Color borderColorValue = Color.Empty;

    [Browsable(true),
    NotifyParentProperty(true),
    EditorBrowsable(EditorBrowsableState.Always),
    DefaultValue(1)]
    public int BorderSize
    {
        get
        {
            return borderSizeValue;
        }
        set
        {
            if (value < 0)
            {
                throw new ArgumentOutOfRangeException(
                    "BorderSize",
                    value,
                    "must be >= 0");
            }

            if (borderSizeValue != value)
            {
                borderSizeValue = value;
            }
        }
    }

    [Browsable(true)]
    [NotifyParentProperty(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [DefaultValue(typeof(Color), "")]
    public Color BorderColor
    {
        get
        {
            return borderColorValue;
        }
        set
        {
            if (value.Equals(Color.Transparent))
            {
                throw new NotSupportedException("Transparent colors are not supported.");
            }

            if (borderColorValue != value)
            {
                borderColorValue = value;
            }
        }
    }
}
<TypeConverter(GetType(BorderAppearanceConverter))>  _
Public Class BorderAppearance
    Private borderSizeValue As Integer = 1
    Private borderColorValue As Color = Color.Empty
    
    
    <Browsable(True), NotifyParentProperty(True), EditorBrowsable(EditorBrowsableState.Always), DefaultValue(1)>  _
    Public Property BorderSize() As Integer 
        Get
            Return borderSizeValue
        End Get
        Set
            If value < 0 Then
                Throw New ArgumentOutOfRangeException("BorderSize", value, "must be >= 0")
            End If
            
            If borderSizeValue <> value Then
                borderSizeValue = value
            End If
        End Set
    End Property
    
    
    <Browsable(True), NotifyParentProperty(True), EditorBrowsable(EditorBrowsableState.Always), DefaultValue(GetType(Color), "")>  _
    Public Property BorderColor() As Color 
        Get
            Return borderColorValue
        End Get
        Set
            If value.Equals(Color.Transparent) Then
                Throw New NotSupportedException("Transparent colors are not supported.")
            End If
            
            If borderColorValue <> value Then
                borderColorValue = value
            End If
        End Set
    End Property
End Class

備註

這個類別會將物件上的屬性支援新增至 所提供的 TypeConverter方法和屬性。 若要讓中的PropertyGrid屬性類型可展開,請針對 和GetProperties的標準實作GetPropertiesSupported指定這個 TypeConverter 。 使用標記子屬性, NotifyParentPropertyAttribute 以確保控件中的 PropertyGrid 正確行為。

注意

您絕對不應該直接存取類型轉換器。 請改用 TypeDescriptor呼叫適當的轉換器。 如需詳細資訊,請參閱基類中的 TypeConverter 範例。

如需類型轉換器的詳細資訊,請參閱 TypeConverter 基類和 如何:實作類型轉換器

建構函式

ExpandableObjectConverter()

初始化 ExpandableObjectConverter 類別的新執行個體。

方法

CanConvertFrom(ITypeDescriptorContext, Type)

傳回這個轉換子是否可以使用指定的內容,將指定類型的物件轉換成這個轉換子的類型。

(繼承來源 TypeConverter)
CanConvertFrom(Type)

傳回值,指出這個轉換子是否可將指定之型別的物件轉換為這個轉換子的型別。

(繼承來源 TypeConverter)
CanConvertTo(ITypeDescriptorContext, Type)

傳回這個轉換器是否可以使用指定的內容,將物件轉換成指定的類型。

(繼承來源 TypeConverter)
CanConvertTo(Type)

傳回值,指出這個轉換子是否可以將物件轉換成指定的型別。

(繼承來源 TypeConverter)
ConvertFrom(ITypeDescriptorContext, CultureInfo, Object)

使用指定的內容和文化特性資訊,將給定的物件轉換為這個轉換器的類型。

(繼承來源 TypeConverter)
ConvertFrom(Object)

會將指定值轉換為這個轉換子的型別。

(繼承來源 TypeConverter)
ConvertFromInvariantString(ITypeDescriptorContext, String)

會使用不區分的文化特性和指定的內容,將指定的字串轉換為這個轉換子的型別。

(繼承來源 TypeConverter)
ConvertFromInvariantString(String)

會使用不因文化特性而異,將指定字串轉換為這個轉換子的型別。

(繼承來源 TypeConverter)
ConvertFromString(ITypeDescriptorContext, CultureInfo, String)

會使用指定內容和文化特性資訊,將指定文字轉換為物件。

(繼承來源 TypeConverter)
ConvertFromString(ITypeDescriptorContext, String)

會使用指定的內容,將指定文字轉換為物件。

(繼承來源 TypeConverter)
ConvertFromString(String)

會將指定的文字轉換成物件。

(繼承來源 TypeConverter)
ConvertTo(ITypeDescriptorContext, CultureInfo, Object, Type)

使用指定的內容和文化特性資訊,將給定的值物件轉換為指定的類型。

(繼承來源 TypeConverter)
ConvertTo(Object, Type)

會使用引數,將指定值物件轉換成指定型別。

(繼承來源 TypeConverter)
ConvertToInvariantString(ITypeDescriptorContext, Object)

會使用指定的內容,將指定值轉換成不因文化特性而異的字串表示。

(繼承來源 TypeConverter)
ConvertToInvariantString(Object)

會將指定值轉換成不因文化特性而異的字串表示。

(繼承來源 TypeConverter)
ConvertToString(ITypeDescriptorContext, CultureInfo, Object)

會使用指定的內容和文化特性資訊,將指定值轉換為字串表示。

(繼承來源 TypeConverter)
ConvertToString(ITypeDescriptorContext, Object)

會使用指定的內容,將指定值轉換為字串表示。

(繼承來源 TypeConverter)
ConvertToString(Object)

會將指定值轉換成字串表示。

(繼承來源 TypeConverter)
CreateInstance(IDictionary)

重新建立 Object,需為物件提供一組屬性值。

(繼承來源 TypeConverter)
CreateInstance(ITypeDescriptorContext, IDictionary)

使用指定的內容,建立與這個 TypeConverter 相關聯之類型的執行個體,並為物件提供一組屬性值。

(繼承來源 TypeConverter)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetConvertFromException(Object)

傳回要在無法執行轉換時擲回的例外狀況。

(繼承來源 TypeConverter)
GetConvertToException(Object, Type)

傳回要在無法執行轉換時擲回的例外狀況。

(繼承來源 TypeConverter)
GetCreateInstanceSupported()

傳回值,指出在這個物件上變更值時是否需要呼叫 CreateInstance(IDictionary) 方法來建立新值。

(繼承來源 TypeConverter)
GetCreateInstanceSupported(ITypeDescriptorContext)

傳回在這個物件上變更值是否需要呼叫 CreateInstance(IDictionary) 來建立新的值,並使用指定的內容。

(繼承來源 TypeConverter)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetProperties(ITypeDescriptorContext, Object)

會使用指定的內容,傳回由值參數所指定之陣列型別的屬性集合。

(繼承來源 TypeConverter)
GetProperties(ITypeDescriptorContext, Object, Attribute[])

取得由值參數所指定的物件型別的屬性集合。

GetProperties(Object)

傳回由值參數所指定的陣列型別的屬性集合。

(繼承來源 TypeConverter)
GetPropertiesSupported()

傳回值,指出這個物件是否支援屬性。

(繼承來源 TypeConverter)
GetPropertiesSupported(ITypeDescriptorContext)

使用指定內容取得值,表示這個物件是否使用支援屬性。

GetStandardValues()

從為這個型別轉換子所設計的資料型別預設內容中,會傳回標準值的集合。

(繼承來源 TypeConverter)
GetStandardValues(ITypeDescriptorContext)

提供格式內容時,傳回此類型轉換子所針對資料類型的標準值集合。

(繼承來源 TypeConverter)
GetStandardValuesExclusive()

傳回值,指出從 GetStandardValues() 所傳回的標準值集合是否為獨佔清單。

(繼承來源 TypeConverter)
GetStandardValuesExclusive(ITypeDescriptorContext)

使用指定的內容,傳回從 GetStandardValues() 所傳回的標準值集合是否為可能值的獨占清單。

(繼承來源 TypeConverter)
GetStandardValuesSupported()

傳回這個物件是否支援可以從清單中選取的標準值集合。

(繼承來源 TypeConverter)
GetStandardValuesSupported(ITypeDescriptorContext)

會使用指定的內容傳回,這個物件是否支援可從清單中挑選的標準值集合。

(繼承來源 TypeConverter)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
IsValid(ITypeDescriptorContext, Object)

傳回指定值物件對這個類型和指定的內容是否有效。

(繼承來源 TypeConverter)
IsValid(Object)

會傳回指定值物件是否對這個型別有效。

(繼承來源 TypeConverter)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
SortProperties(PropertyDescriptorCollection, String[])

排序屬性的集合。

(繼承來源 TypeConverter)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於

另請參閱