private void PropertyGrid_ObjectPropertyValueChanged(object sender, ObjectPropertyValueChangedEventArgs e) { #region 封装可撤销的工作单元 if (ActiveHosting.Loaded) { SEUndoUnitFormDesigner undoUnit = new SEUndoUnitFormDesigner(e.PropertyName); undoUnit.Type = SEUndoUnitFormDesigner.UndoUnitType.ComponentChanged; undoUnit.Entity = (EntityBase)e.RootObject; undoUnit.Value = e.TargetObject; undoUnit.Members.Add(e.Row.PropertyName, e.OldValue, e.NewValue); ActiveHosting.AddUndoUnitList(undoUnit); Debug.WriteLine("封装可撤销的工作单元:" + undoUnit.ToString()); } #endregion }
private void PropertyGrid_PropertyChanged(object sender, PropertyChangeEventArgs e) { //如果是在设计中拖动操作组件的,此处直接返回 //无需UpdateView,也不能在这里封装撤销单元,因为在这种情况下这里拿不到旧值 if (ActiveHosting.ComponentChanging) { return; } _propertyChanging = true; #region 提交可撤销的工作单元集合 //提交可撤销的工作单元集合(如果需要),提交之后清空临时可撤销工作单元集合 ActiveHosting.CommitUndoUnitList(); #endregion #region 更新当前设计器中选定的对象 //TODO:这部分代码可考虑整个移到FormDesignSurfaceHosting ICollection selectedComponents = ActiveHosting.SelectionService.GetSelectedComponents(); //释放时会走到这里 ,control为null if (selectedComponents == null) { return; } IComponent[] selArray = new IComponent[selectedComponents.Count]; selectedComponents.CopyTo(selArray, 0); ActiveHosting.UpdateView(selArray); #endregion _propertyChanging = false; ActiveHosting.MakeDirty(); }