- PR -

PropertyGridでのアンドゥ実装

1
投稿者投稿内容
ブラウニー
会議室デビュー日: 2007/05/12
投稿数: 8
投稿日時: 2007-05-12 21:34
環境:XP VS2005 .Net2.0

お世話になります。

PropertyGridのGridItemの値のアンドゥ機能を実装したいのですが、以下の方法では
うまくいきませんでした。

・PropertyValueChangedイベント時にSelectedGridItem.Valueを保存しておく。
・アンドゥ時にPropertyGridのSelectedGridItem.Valueに値を書き戻す。

ここでSelectedGridItem.Valueは読み取り専用のためコンパイルエラーになり、実現
できませんでした。

なにかよい実装方法などあればアドバイスお願いします。



KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-05-13 09:43
GridItem.PropertyDescriptor.Name でプロパティの名前が取れますので、
リフレクションを使って元オブジェクトに設定してあげるとかどうでしょう?

ただし、プロパティの変更はオブジェクトの内部状態を変更するという意味ですから、
元の値に戻しただけで「アンドゥ」できたと言えるのかは少々疑問です。
連動して変化するプロパティがあるオブジェクトもありますからね。
オブジェクトごと複製を作成し、SelectedObject に設定しなおすほうがよいような気がします。
ブラウニー
会議室デビュー日: 2007/05/12
投稿数: 8
投稿日時: 2007-05-14 21:15
なるほどです。リフレクションをちょっと勉強してチャレンジしてみます。
オブジェクトのサイズとの兼ね合いになりますが、クローン保存も検討してみます。
ありがとうございました!
ブラウニー
会議室デビュー日: 2007/05/12
投稿数: 8
投稿日時: 2007-05-22 11:45
今回はクローン保存しないで、変数ごとに保存して実装しました。リフレクションを使うとスマートに実装できますねー。アドバイス感謝でした。
1

スキルアップ/キャリアアップ(JOB@IT)