¿Cuál es la diferencia entre TreeNode.EndEdit
y configuración NodeLabelEditEventArgs.CancelEdit
?TreeNode.EndEdit vs NodeLabelEditEventArgs.CancelEdit
Respuesta
Pues bien, en la superficie, llamando EndEdit(true)
de hecho parece hacer la misma cosa que la emisión de e.CancelEdit = true
en un controlador de AfterLabelEdit o BeforeLabelEdit evento. Sin embargo, los dos enfoques no son equivalentes y no se usan con el mismo propósito.
mejor para demostrar con un ejemplo el comportamiento real:
Ellos hacer lo mismo, porque:
- Si llama
EndEdit(true)
, el nodo del árbol dejará modo de edición y descartar los cambios, - Si emite
e.CancelEdit = true
duranteAfterLabelEdit
, el nodo de árbol abandonará el modo de edición y descartará los cambios.
Pero no son equivalentes, ya que:
- Si no lo hace llamada
EndEdit(true)
, el modo de árbol de nodos de edición se no cambio (obviamente), - Si no problema
e.CancelEdit = true
duranteAfterLabelEdit
, el nodo del árbol todavía deja el modo de edición (y confirma los cambios), - Si no lo hace tema
e.CancelEdit = true
duranteBeforeLabelEdit
, el nodo del árbol se todavía entrar en el modo de edición.
Otra diferencia es que EndEdit()
desencadena AfterLabelEdit
, pero no de forma recursiva AfterLabelEdit
desencadenar en sí (por suerte).
Ahora, por lo general NodeLabelEditEventArgs.CancelEdit se utiliza para la validación, es decir, para descartar modificaciones no válidos a la etiqueta de nodo de árbol (durante AfterLabelEdit
) o prevenir completamente al usuario de la edición de las etiquetas de algunos nodos (durante BeforeLabelEdit
). En ambos casos, el usuario ya ha terminado o aún no ha comenzado a editar la etiqueta.
EndEdit() se supone que se utilicen para cometer la fuerza o cancelar la edición mientras el usuario todavía está editando la etiqueta. Por supuesto, eso significa que es EndEdit(false)
mal y equivocado, ya que envía un cambio potencialmente romper antes de que el usuario ha terminado de escribir y sin su consentimiento. Entonces, nunca lo había visto así, de hecho.
Calling EndEdit(true)
para descartar la edición actual podría ser útil si algo más requiere absolutamente el foco ahora y no quieren Autocommit la edición incompleta cuando el nodo del árbol pierde el foco. Sin embargo, desperdiciar el trabajo de su usuario de esa manera todavía es grosero.
De vuelta en los días de MFC, hubo un uso legítimo para el equivalente EndEdit(true)
: cancelar la edición cuando el usuario presiona la tecla ESC
. Lo creas o no, esa función no fue compatible con la caja de MFC en ese momento (y tal vez todavía no es hoy, no lo compruebo).
Pero hoy en día, no hay mucho uso para EndEdit()
en mi opinión. Mejor que descanse en paz.
- 1. J2ME VS Android VS iPhone VS Symbian VS Windows CE
- 2. TagSoup vs Jsoup vs HTML Analizador vs vs HotSax
- 3. 'método' vs. 'mensaje' vs. 'función' vs. '???'
- 4. ACE vs Boost vs Poco vs wxWidgets
- 5. VS 2008 vs VS 2008 Express
- 6. Atomikos vs JOTM vs Bitronix vs?
- 7. Acumular vs fold vs reducir vs compress
- 8. .NET vs ASP.NET vs CLR vs ASP
- 9. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - FIABILIDAD
- 10. método vs función vs procedimiento vs clase?
- 11. Rhino simulacro vs Typemock vs JustMock vs
- 12. inline vs __inline vs __inline__ vs __forceinline?
- 13. Exec vs vs ExecWait ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs vs ExecDos ExeCmd
- 14. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, ¿qué tienen en común?
- 15. Crystalspace vs. Irrlicht vs. .....?
- 16. NetSqlAzMan vs AzMan vs (?????)
- 17. SpiderMonkey vs JavaScriptCore vs.
- 18. Django -vs- Grails -vs-?
- 19. Stackpanel: Altura vs ActualHeight vs ExtentHeight vs ViewportHeight vs DesiredSize vs RenderSize
- 20. Mathematica: sin evaluar vs vs Defer Hold vs vs HoldForm HoldAllComplete vs etc, etc
- 21. NSImage vs. CIImage vs. CGImage?
- 22. Bitmap vs ImageView vs Drawable
- 23. DIP vs. DI vs. IoC
- 24. Boo vs C# vs Python?
- 25. DbConnection vs OleDbConnection vs OdbcConnection
- 26. MySQL vs Firebird vs SQLite
- 27. JSF Facelets vs vs JSP
- 28. migrator.net vs fluentmigrator vs migsharp
- 29. Matlab vs Aforge vs OpenCV
- 30. flume vs kafka vs others
Malvado o no, tuve que llamar a EndEdit cuando iba al menú superior y mi nodo no abandonaba el modo de edición. En mi humilde opinión, esa es la principal diferencia entre ellos: puede llamar a EndEdit desde cualquier lugar, mientras que no puede usar CancelEdit si AfterLabelEdit aún no se activó. –