• 该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.

来源 http://www.nwoods.com/forum/forum_posts.asp?TID=2745

其他提示

该事件的参数(GoChangedEventArgs)为改变事件具有的性IsBeforeChanging其指示是否改变事件提出自"RaiseChanging"方法(true),或RaiseChanged(false)。这应该告诉你是否改变已经发生,但我知道没有办法来取消它。

好的,我可以建议是,而不是检查,如果变化是允许的,并执行它,查看如果变化是 允许,如果它不是呼吁"撤销"方法的参数的变化的事件。所以基本上:

OnChanged(GoChangedEventArgs e)
{
  if(NotAllowed)
  {
    e.Undo();
  }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top