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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top