你怎么"预览"用户操作的喜欢调整或编辑在GoDiagrams?
题
- 该GoDiagram对象模型具有GoDocument.
- GoViews有一个参考GoDocument.
- 如果用户没有任何修改的图表面,GoDocument.改变了事件提出的有关信息的事件的论点。
我谨通知时,一些用户的行动发生,所以,我可以赋予我的控制器(禁止/取消它,如果需要的话)和随后的问题的看-更新的订单有,实际上修改 Northwoods GoDiagram 第三方的组成部分。
改变的事件的通知,事情刚刚发生了(过去)-做的所有上述事件的处理程序的结果在一个....(等待它)...StackOverflowException.(GoDocument.改变处理程序>更新GoDocument>击新的事件改变了..)
所以问题时,我如何获得一个BeforeEditing或BeforeResizing种通知的模型在GoDiagrams?有的人已经在那里居住告诉一个故事吗?
解决方案
JFYI...对部件供应商的建议是类和复盖的适当方法这一点。复盖bool CanXXX()方法,提出一个可取消的定义事件。如果用户假返回,保释出来(return false中止用户的行动)的CanXXX.没有内在的机制,为此在GoDiagrams.
例如,可以定义 CustomView.ObjectResizing可取消的 事件。在你的复盖的 GoToolResizing.CanStart,可以提高 这一事件。如果的 CancelEventArgs.取消酒店 变得真的,你会 CanStart()return false.
其他提示
该事件的参数(GoChangedEventArgs)为改变事件具有的性IsBeforeChanging其指示是否改变事件提出自"RaiseChanging"方法(true),或RaiseChanged(false)。这应该告诉你是否改变已经发生,但我知道没有办法来取消它。
好的,我可以建议是,而不是检查,如果变化是允许的,并执行它,查看如果变化是 不 允许,如果它不是呼吁"撤销"方法的参数的变化的事件。所以基本上:
OnChanged(GoChangedEventArgs e)
{
if(NotAllowed)
{
e.Undo();
}
}