Wie „Vorschau“ von Benutzeraktionen wie der Größe oder Bearbeitung in Godiagrams „Vorschau“?

StackOverflow https://stackoverflow.com/questions/111744

  •  02-07-2019
  •  | 
  •  

Frage

  • Das Godiagram -Objektmodell hat ein Godokument.
  • Goviews haben einen Hinweis auf ein Godokument.
  • Wenn der Benutzer eine Änderung der Diagrammoberfläche vornimmt, wird mit den relevanten Informationen ein godokument. Das Ereignis wird in den Ereignisargumenten erhoben.

Ich möchte benachrichtigt werden, wenn einige Benutzer-Aktionen auftreten, damit ich mich mit meinem Controller einlassen kann (wenn es nötig ist) und dann Ansichtsbestellungen von dort aus ausstellen, die die tatsächlich ändern Northwoods Godiagram Komponente von Drittanbietern.
Das veränderte Ereignis ist eine Benachrichtigung darüber, dass etwas gerade passiert ist (Vergangenheitsform) - all das im Ereignishandler zu tun, führt zu einem .... ((((warte darauf) ... Stackoverflowexception. (Godocument.Changed Handler> Aktualisiert Godocument> neue veränderte Ereignisse abfeuern.)

Frage also, wie bekomme ich ein Vorher- oder Bevorbereiten von Benachrichtigungsmodell in Godiagrams? Hat jemand, der dort gelebt hat, um eine Geschichte zu erzählen?

War es hilfreich?

Lösung

JFYI ... Die Empfehlung von Komponenten-Vendor besteht darin, geeignete Methoden dafür zu unterklassen und zu überschreiben. Überschreiben Sie die Bool canxxxx () -Methode und erhöhen Sie ein kündigbares benutzerdefiniertes Ereignis. Wenn der Abonnent falsch zurückgibt, rettungslos (Rückgabe falsch, um die Benutzeraktion abzubrechen) von canxxx.Kein eingebauter Mechanismus dafür in Godiagrams.

Sie können beispielsweise ein CustomView.Objectressizing stornierbares Ereignis definieren. In Ihrer Überschreibung von GOTOOLRESIZIZION.CANSTART können Sie dieses Ereignis erhöhen. Wenn die Eigenschaft cancelEventargs.cancel zu wahr wird, hätten Sie Canstart () falsch zurück.

Quelle http://www.nwoods.com/forum/forum_posts.asp?tid=2745

Andere Tipps

Die Ereignisargumente (gochangEdEventArgs) für das Änderungsereignis haben eine Eigenschaft, die angibt, ob das Änderungsereignis aus der "RaiseChanging" -Methode (True) oder der Raishanged (falsch) hervorgerufen wurde. Das sollte Ihnen sagen, ob die Änderung bereits aufgetreten ist, aber ich kenne keine Möglichkeit, sie abzusagen.

Das Beste, was ich vorschlagen kann, ist, anstatt zu überprüfen, ob die Änderung erlaubt ist, und prüfen Sie, ob die Änderung ist nicht erlaubt, und wenn es nicht die "Rückgängig" -Methode für die Argumente im Änderungsereignis nicht bezeichnet wird. Also im Wesentlichen:

OnChanged(GoChangedEventArgs e)
{
  if(NotAllowed)
  {
    e.Undo();
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top