我希望在发生某些用户操作时收到通知,以便我可以与我的Controller进行协商(如果需要,禁止/取消它),然后从那里发出实际修改 Northwoods的视图更新订单GoDiagram 第三方组件。
Changed事件是一个刚刚发生事件的通知(过去时) - 在事件处理程序中执行上述所有操作会导致....(等待它)... StackOverflowException。 (GoDocument.Changed handler> Updates GoDocument> Firing new Changed events ..)
那么问题,如何在GoDiagrams中获得BeforeEditing或BeforeResizing类型的通知模型?有谁曾经去过那里讲故事吗?
答案 0 :(得分:2)
... JFYI 组件供应商的建议是为此子类化并覆盖适当的方法。覆盖bool CanXXX()方法,引发可取消的自定义事件。如果订户返回false,则保存CanXXX(返回false以中止用户操作)。 在GoDiagrams中没有内置机制。
例如,您可以定义一个 CustomView.ObjectResizing可取消 事件。在你的覆盖 GoToolResizing.CanStart,你可以提高 那件事。如果 CancelEventArgs.Cancel属性 变得如此,你会有 CanStart()返回false。
答案 1 :(得分:0)
change事件的事件参数(GoChangedEventArgs)有一个属性IsBeforeChanging,它指示是否从“RaiseChanging”方法(true)或RaiseChanged(false)引发了更改事件。这应该告诉你是否发生了变化,但我知道无法取消它。
我能建议的最好的不是检查是否允许更改并执行更改,检查更改是否不允许,以及是否未调用“撤消”方法变更事件中的参数。基本上是这样的:
OnChanged(GoChangedEventArgs e)
{
if(NotAllowed)
{
e.Undo();
}
}