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.SelectedObject
is Class A
、propertyName
is Width
、Width
is n't Class A
property、it is Size
property、なので例外が発生しました。
この問題を解決するにはどうすればよいですか?undo/redo command
この状況にどのように作成しますか?