PropertyDescriptor.SetValue(Object, Object) メソッド


派生クラスでオーバーライドされた場合、コンポーネントの値を別の値に設定します。When overridden in a derived class, sets the value of the component to a different value.

 abstract void SetValue(System::Object ^ component, System::Object ^ value);
public abstract void SetValue (object component, object value);
abstract member SetValue : obj * obj -> unit
Public MustOverride Sub SetValue (component As Object, value As Object)



設定する対象のプロパティ値を持つコンポーネント。The component with the property value that is to be set.


新しい値です。The new value.


通常、このメソッドはリフレクションによって実装されます。Typically, this method is implemented through reflection.

このメソッドは、次の順序で DesignerTransaction を自動的に作成します。This method creates a DesignerTransaction automatically in the following order:

  1. メソッドは、IDesignerHost.CreateTransaction メソッドを呼び出して、変更を表す新しい DesignerTransaction を作成します。The method calls the IDesignerHost.CreateTransaction method to create a new DesignerTransaction to represent the changes.

  2. メソッドは、IComponentChangeService.OnComponentChanging メソッドを呼び出して、トランザクションが開始され、変更が発生することを示します。The method calls the IComponentChangeService.OnComponentChanging method to indicate that the transaction has begun and the changes are about to occur.

  3. メソッドは、プロパティを、このメソッドの確認順序によって決定される値にリセットします。The method resets the property to the value determined by this method's checking order.

  4. メソッドは、IComponentChangeService.OnComponentChanged メソッドを呼び出して、変更が発生したことを示します。The method calls the IComponentChangeService.OnComponentChanged method to indicate that the changes have occurred.

  5. メソッドは DesignerTransaction.Commit を呼び出して、トランザクションが完了したことを示します。The method calls DesignerTransaction.Commit to indicate that the transaction is complete.

トランザクションの目的は、UndoRedo の機能をサポートすることです。The purpose of the transaction is to support Undo and Redo functionality.

注意 (実装者)

このメソッドをオーバーライドする場合は、実装する必要がある適切な "SetMyProperty" メソッドを呼び出すことによって、プロパティの値を設定する必要があります。When you override this method, it should set the value of the property by invoking the appropriate "SetMyProperty" method that you need to implement. 指定された値が有効でない場合、コンポーネントは、渡された例外をスローする必要があります。If the value specified is not valid, the component should throw an exception, which is passed up. "SetMyProperty" メソッドによって例外がスローされない場合は、"SetMyProperty" メソッドに続く "GetMyProperty" メソッドが渡された値を返すように、プロパティを設計する必要があります。You should design the property so that a "GetMyProperty" method (that you have implemented) following a "SetMyProperty" method returns the value passed in when the "SetMyProperty" method does not throw an exception.