undo/redo commandいくつかのプロパティに新旧の値を設定できるものを作成したい。propertygridプロパティ値を操作するために使用します。を使ってやってみPropertyValueChanged eventます。
私の試み:
private void pg_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
var item = propertyGrid.SelectedObject;
var propertyName = e.ChangedItem.PropertyDescriptor.Name;
PropertyInfo pi = item.GetType().GetProperty(propertyName);
var oldValue = e.OldValue;
var newValue = propertyInfo.GetValue(item, null);
//create command here
}
プロパティの親が。の場合、これは正常に機能しますpropertyGrid.SelectedObject。しかし、私がクラスを持っている場合:
Class A {
public Size Size {get;set;}
}
時々動作しません。例:propertyGrid.SelectedObjectis Class A、propertyNameis Width、Widthis n't Class Aproperty、it is Sizeproperty、なので例外が発生しました。
この問題を解決するにはどうすればよいですか?undo/redo commandこの状況にどのように作成しますか?