MIGRAR DE VB6 A VB.net

07/11/2004 - 11:17 por JUAN | Informe spam
Tengo una aplicacion muy compleja en VB6 y quiero pasar a
VB.NET pero me da mucho errore sobre todo quiero saber
como pasar una matris de textbox

Preguntas similare

Leer las respuestas

#1 Fernando Balderrama
07/11/2004 - 15:27 | Informe spam
No hay matrices de controles en VB .NET

Fernando

"JUAN" escribió en el mensaje
news:4b0101c4c4b3$01d653f0$
Tengo una aplicacion muy compleja en VB6 y quiero pasar a
VB.NET pero me da mucho errore sobre todo quiero saber
como pasar una matris de textbox
Respuesta Responder a este mensaje
#2 Leonardo Azpurua
07/11/2004 - 17:24 | Informe spam
"JUAN" escribió en el mensaje
news:4b0101c4c4b3$01d653f0$
Tengo una aplicacion muy compleja en VB6 y quiero pasar a
VB.NET pero me da mucho errore sobre todo quiero saber
como pasar una matris de textbox



Hola, Juan:

Jamás se me ocurriría "migrar" una aplicación de VB6 a VB.Net.

Por una parte, la gran ventaja de VB.Net sobre VB6 es su orientación a
objetos completa. Y esto se aprovecha desde el diseño de la aplicación. Es
decir, más que "migrar" lo que habría que hacer es replantearse la
aplicación desde el diseño. Luego, al comenzar a construirla, puedes "cortar
y pegar" mucho código. A pesar de sus beneficios, .Net tambien tiene su
costo, que se traduce en mayores exigencias de hardware. Otra justificación
para la migración a .Net es que tengas que aprovechar los beneficios de
portabilidad (años luz detrás de Java en este aspecto) o despliegue
distribuído (con SOAP o Remoting) que te ofrece .Net. Pero si no necesitas
nada de esto, mejor deja tu aplicación en VB6 y considera .Net para los
proyectos futuros.

Con respecto a las matrices de controles que teníamos en VB6 y que ahora,
desafortunadamente, no están, puedes -si es imprescindible, y en ocasiones
lo es- declarar un Array de TextBox, agregarlos a la colección Controls de
la forma y asignarles manualmente la dirección del delegado que procesará
cada uno de sus eventos:

Dim txMatriz() As TextBox

For i = 0 To nControls
Dim cTextBox As New TextBox
Redim Preserve txMatriz(i)
txMatriz(i) = cTextBox
Controls.Add(cTextBox)
With textBox
.Left = ...
.Top = ...
... Asignas las propiedades que necesites
.Tag = i.ToString
' Puedes usar Tag de la misma maneraque usabas Index en VB6
End With
AddHandler txMatriz(i).Click, AddressOf txMatrizClick
AddHandler txMatriz(i).Validating, AddressOf txMatrizValidating
... asi para cada uno de los eventos
Next

En el proceso de cada evento, el objeto sender es una referencia al control
que generó el evento:

Private Sub txMatrizClick(sender As Object, e As System.EventArgs)

en este caso, Integer.Parse(sender.Tag) -si asignaste i.ToString a Tag
mientras cargabas los controles- es equivalente del argumento Index que
recibias en los manejadores de eventos de controles pertenecientes a
matrices en VB.

La alternativa a la creación dinámica de los controles contenidos en la
matriz, es que los definas en tiempo de diseño y luego simplemente los
agregues al array mediante instrucciones explícitas, algo así como:

Dim txMatriz() As TextBox
Dim nMatriz As Integer = 0

Private Sub AddText2Matriz(arg as TextBox)
Redim Preserve txMatriz(nMatriz)
txMatriz(nMatriz) = arg
arg.Tag = nMatriz.ToString
AddHandler txMatriz(nMatriz).Click, AddressOf txMatrizClick
AddHandler txMatriz(nMatriz).Validating, AddressOf txMatrizValidating
nMatriz += 1
End Sub

y luego

AddText2Matriz(Text1)
AddText2Matriz(Text2)

o puedes complicar un poco la función para que reciba un Array de TextBoxes,
y escribir

AddText2Matrix(Text1, Text2, TextNombre)

Salud!

Leonardo
mvp vb
Respuesta Responder a este mensaje
#3 DJ MIAO
07/11/2004 - 17:54 | Informe spam
No la migres.Si te trabaja bien no pierdas el tiempo
migrandola.


Miao...
Comprate un libro.
Tengo una aplicacion muy compleja en VB6 y quiero pasar


a
VB.NET pero me da mucho errore sobre todo quiero saber
como pasar una matris de textbox
.

Respuesta Responder a este mensaje
#4 Tristan
08/11/2004 - 20:07 | Informe spam
Con respecto a las matrices de controles que teníamos en VB6 y que ahora,
desafortunadamente, no están,



Bueno, sin ánimo de polemizar contigo, Leonardo, eso es muy discutible. Yo
creo más bien que las matrices de controles existían en VB6 y anteriores
debido a las carencias de estos lenguajes. Ahora que se puede asignar
dinámicamente la rutina de tratamiento de evento, no veo ninguna ventaja en
que existan. Por el contrario se puede utilizar cualquiera de las muchas
estructuras de datos presentes en .net para crear arrays de controles, que
además tienen la ventaja, junto al polimorfismo, de permitir agrupar
controles de diverso tipo dentro de una misma estructura.

En Delphi, ni en ningún otro lenguaje que conozca, existen, por la misma
razón.

Lamentablemente creo que Microsoft va a retroceder en la próxima versión, en
esa y en otras cosas, para hacer las cosas más fáciles a los viejos
programadores de VB. Bueno, es comprensible que lo vayan a hacer. Veremos
que tal se implementa la idea. De momento, creo que son un elemento
redundante, poco flexible y que mantendrá perezosos a los programadores de
VB6, que ya de por si tienen poco tendencia a querer comprender que son los
delegados.

Lo que si es cierto, es que debido a una decisión de diseño que me agrada
muy poco, el diseñador de windows forms utiliza WithEvents en lugar de
AddHandler para asignar eventos a los controles. Esto hace complicado
aprovechar el trabajo del diseñador en la creación de matrices de controles.
Utilizando C#, basta con copiar y pegar. Si en mis manos estuviese, la
cláusula WithEvents no existiría en el lenguaje. Lamento que por
compatibilidad se hayan introducido tantos elementos "sucios" en vb.net.

Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida