Visual Studio vs.#Develop - Controladores de eventos predeterminados
-
05-09-2019 - |
Pregunta
Visual Studio y SharpDevelop no configuran delegados para manejar eventos de la misma manera.La forma en que están configurados es un poco diferente.Esto dificulta usar VS en un lugar y #Develop en otro (en el mismo proyecto).
Por ejemplo, en VB, Visual Studio hace lo siguiente:
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Y ...
Friend WithEvents OK_Button As System.Windows.Forms.Button
Para que el control se declare, no sólo con un alcance diferente (esto también puede ser un problema, pero no es el tema de este post) sino con un withevents.Luego se le asigna el controlador de eventos mediante una cláusula handles.
en #Desarrollo se hace así...
Sub OK_ButtonClick(sender As Object, e As EventArgs)
End Sub
y ...
Private button1 As System.Windows.Forms.Button
Luego, en el método InitializeComponent
AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick
Lo más molesto de esto es que incluso si se hace de una manera, el otro ide lo rehará, teniendo declaraciones duplicadas y, por supuesto, errores de tiempo de compilación.
¿Alguien conoce alguna forma de solucionar esto, alguna forma de personalizar los controladores predeterminados?¿Incluso si es solo de alguna manera que se puedan desactivar, para que se pueda escribir manualmente?
Solución
sacarlos de la .designer y conectarlos de forma manual en el constructor en el código subyacente. la .designer se regenera por el diseñador de cualquier herramienta que utilice
Otros consejos
SharpDevelop es liberado bajo una licencia LGPL, por lo que siempre se puede conseguir la fuente y hacer los cambios que desee.
Para que los cambios que desea, es posible que necesite cambiar o anular los métodos InsertComponentEvent y CreateEventHandler en la clase VBNetDesignerGenerator. Está en el proyecto FormsDesigner.
Usted puede obtener los href="http://www.icsharpcode.net/OpenSource/SD/Download/" fuente aquí .
Si bien no soy uno que por lo general de acuerdo con la gente que dice que "este proyecto es de código abierto, modificar el código base de uno mismo", esto es un caso en el que podría ser una respuesta válida.
La razón por la #develop es hacer las cosas de la manera que lo hace es porque es un puerto directo de la forma en C # agrega controladores de eventos, por ejemplo,
AddHandler Me.button1.Click, AddressOf Me.OK_ButtonClick
no es más que una traducción directa de:
this.button1.Click += new EventHandler(OK_ButtonClick);
Si estaba utilizando C #, Visual Studio y #develop se encargará de la creación de eventos en el código exactamente del mismo modo.
Obviamente, nadie asiste al caso de uso de Visual Basic común en #develop, y como he dicho anteriormente, este es uno de esos casos en donde marginales que sólo podría tener que modificar el código usted mismo, o tal vez incluso contribuir de nuevo a la fuente #develop para este caso particular.
Estoy seguro de que todos los demás que utiliza #develop para Visual Basic agradecería que.
Esta no será la sugerencia más práctica, pero te prometo que hará el trabajo por ti.
#Develop es de código abierto.Entonces, teóricamente podrías modificar la base del código para que tenga el mismo comportamiento que Visual Studio.net...No estoy seguro de qué tan complicado podría ser esto, pero pensé en compartir mi idea...
Como alternativa a realizar el cambio usted mismo, puede comunicarse con el equipo central para solicitar esta función.Quizás una donación ayudaría...Otros también podrían estar interesados en este cambio.
Saludos Frank V.