elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 01:56  


Tema destacado: Últimos eventos sobre seguridad/inseguridad

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderador: Littlehorse)
| | |-+  La transición de Visual Basic 6.0 a Visual Basic.NET [imprescindible leerla]
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: La transición de Visual Basic 6.0 a Visual Basic.NET [imprescindible leerla]  (Leído 4,508 veces)
BADBYTE-K
Knowledge is power, Diesel-K


Desconectado Desconectado

Mensajes: 2.328


Aprende todo lo que este a tu alkance


Ver Perfil WWW
La transición de Visual Basic 6.0 a Visual Basic.NET [imprescindible leerla]
« en: 29 Marzo 2004, 09:21 »


La transición de Visual Basic 6.0 a Visual Basic.NET


Microsoft Visual Basic.NET es la próxima versión de Microsoft Visual Basic©, reestructurada desde la base de .NET Framework que facilitará la creación de aplicaciones de la próxima generación para el sistema operativo Microsoft Windows© y el Web. Con Visual Basic.NET, el desarrollo visual de aplicaciones y servicios Web, aplicaciones de Windows y componentes del lado del servidor se convierte en una tarea sencilla. Además, Visual Basic.NET permite la distribución XCOPY de las aplicaciones de Windows, de forma que ya no tendrá que preocuparse de los problemas de las versiones de DLL. Con Visual Basic.NET, el "caos de las DLL" es cosa del pasado.

Durante el diseño de Visual Basic.NET, tuvimos en cuenta las exigencias principales de los desarrolladores de Visual Basic de todo el mundo. El lenguaje Visual Basic es ahora un auténtico lenguaje orientado a objetos y admite la herencia de implementación. El diseñador de formularios admite la herencia visual y contiene nuevas características, como el ajuste de tamaño automático de los formularios, localización de recursos y soporte de accesibilidad. La herramientas de datos admiten ahora de forma intrínseca datos XML y se puede trabajar con el enlace de datos en tiempo de diseño con los datos desconectados. Además, Visual Basic.NET se crea directamente en .NET Framework, para que el usuario pueda disponer de acceso completo a todas las características de la plataforma y permita la interoperabilidad con otros lenguajes .NET.
   
Al presentar estas características, hemos realizado cambios en varios aspectos del producto. En este documento se describen algunos de los cambios de Visual Basic 6.0 a Visual Basic.NET y se explica los motivos de los mismos. Asimismo, se describen las capacidades del asistente para actualización de Visual Basic.NET, una herramienta suministrada como parte del producto que permitirá al usuario actualizar sus aplicaciones a Visual Basic.NET.

 
Si desea obtener información adicional con respecto a la actualización de Visual Basic 6.0 a Visual Basic.NET, consulte el artículo Preparación de las aplicaciones de Visual Basic 6.0 para su actualización a Visual Basic.NET. En este artículo se describe el proceso de actualización y se ofrecen recomendaciones sobre la arquitectura para efectuar la actualización sin problemas.

artikulo mencionado...
http://www.microsoft.com/spanish/msdn/articulos/archivo/020301/voices/vb6tovbdotnet.asp

Lenguaje


Tipo de datos Variant

Visual
Basic 6.0  Variant es un tipo especial de datos "universal" que puede contener cualquier clase de datos excepto cadenas de longitud fija. La variable Object se utiliza como señalador a un objeto. Variant es el tipo de datos predeterminado.
 


Visual Basic.NET
 

El tiempo de ejecución en lenguaje común (CLR) utiliza la variable Object para el tipo de datos universal. Visual Basic.NET podría haber seguido utilizando Variant como este tipo de datos, pero se decidió adoptar la convención de nomenclatura de CLR para evitar confusiones en el desarrollo entre distintos lenguajes. El sistema de tipos se simplifica al disponer de un único tipo de datos universal. El tipo de datos predeterminado es Object.
 


Asistente
actualización
 

Los tipos de datos Variant cambian a Object, de modo que el siguiente código:

Dim x As Variant
se actualiza a:

Dim x As Object
 

Variables Integer y Long

Visual
Basic 6.0 Las variables Long se almacenan como números de 32 bits con signo y las variables Integer como números de 16 bits.
 

Visual Basic.NET

Las variables Long se almacenan como números de 64 bits con signo, las variables Integer como números de 32 bits y las variables Short como números de 16 bits. En sistemas de 32 bits, las operaciones de enteros de 32 bits son más rápidas que las operaciones de 16 ó 64 bits. Esto significa que Integer será el tipo numérico fundamental y de mayor eficacia.

Como algunas tecnologías de .NET Framework se basan en las tecnologías modernas de 32 y 64 bits, resulta razonable actualizar los tamaños de datos a la nueva tecnología.
 


Asistente
actualización
 

Cambian los tipos de variable, de modo que el siguiente código:

Dim x As IntegerDim y As Long
se actualiza a:

Dim x As ShortDim y As Integer
 

Tipo de datos Currency

Visual
Basic 6.0 Visual Basic 6.0 admite el tipo de datos Currency. No se puede declarar una variable para que sea del tipo Decimal (aunque las variantes pueden disponer de un subtipo de Decimal).

Las variables Currency se almacenan como números de 64 bits en un formato de enteros, con una escala de 10.000 para ofrecer un número de punto fijo con 15 dígitos a la izquierda del punto decimal y 4 dígitos a la derecha. Esta representación ofrece un intervalo de -922,337,203,685,477.5808 a 922,337,203,685,477.5807.

Las variables Decimal se almacenan como enteros de 96 bits con signo escalados por una potencia de variable de 10. El factor de escala a la potencia 10 especifica el número de dígitos a la derecha del punto decimal y abarca del 0 al 28. Con una escala del 0 (sin números decimales), el valor máximo posible es +/-79,228,162,514,264,337,593,543,950,335. Con 28 números decimales, el valor máximo es +/-7.9228162514264337593543950335 y el mínimo distinto de cero es +/-0.0000000000000000000000000001.
 


Visual Basic.NET
 

El tipo de datos Currency no proporciona suficiente precisión para evitar errores de redondeo, por lo que Decimal se creó como su propio tipo de datos.
 


Asistente
actualización
 

Los tipos de datos Currency cambian a Decimal, de modo que el siguiente código:

Dim x As Currency
se actualiza a:

Dim x As Decimal
 

Variable Date

Visual
Basic 6.0 La variable Date se almacena internamente en un formato Double y se puede manipular asimismo como Double.

Las variables Date se almacenan como números de puntos flotantes IEEE de 64 bits que representan fechas que abarcan desde el 1 de enero de 100 al 31 de diciembre de 9999 y horas desde las 0:00:00 hasta las 23:59:59. Cualquier valor de datos literal reconocible se puede asignar a las variables Date.

Cuando otros tipos numéricos se convierten a Date, los valores que se muestran a la izquierda del decimal representan información sobre la fecha, mientras que los valores que aparecen a la derecha representan la hora. Medianoche es 0 y mediodía 0.5. Los números enteros negativos representan fechas anteriores al 30 de diciembre de 1899.
 


Visual Basic.NET
 

Las variables Date se almacenan internamente como enteros de 64 bits, de modo que no se pueden manipular directamente como Double. .NET Framework proporciona las funciones ToOADate y FromOADate para la conversión entre Double y Date. La representación de fechas como enteros simplifica y agiliza la manipulación de fechas.
 


Asistente
actualización
 

Aunque no se pueden detectar todos los casos en los que se utiliza una variante para almacenar Date como Double, la herramienta de actualización suele insertar el método ToOADate o FromOADate adecuado en el lugar donde Double se asigna a Date. Por ejemplo, el siguiente código:

Dim dbl As Double
  Dim dat As Date
  Dbl = dat
se actualiza a:

Dim dbl As Double
  Dim dat As Date
  Dbl = dat.ToOADate
 

Cadenas de longitud fija

Visual
Basic 6.0 Las variables se pueden declarar como cadenas de longitud fija, excepto en el caso de las variables Public de un módulo de clase.
 


Visual Basic.NET
 

La primera versión de CLR no es compatible con las cadenas de longitud fija. Esta compatibilidad se agregará en una versión posterior.
 


Asistente
actualización
 

En la mayoría de los casos esto no constituye ningún problema, ya que se ofrece un comportamiento de cadena de longitud fija, de forma que el siguiente código:

Dim MyFixedLengthString As String * 100
se actualiza a:

Dim MyFixedLengthString As New VB6.FixedLengthString(100)
Consulte el artículo Preparación de las aplicaciones de Visual Basic 6.0 para su actualización a Visual Basic.NET para obtener información completa sobre este tema.
 
artikulo mencionado...

http://www.microsoft.com/spanish/msdn/articulos/archivo/020301/voices/vb6tovbdotnet.asp

Instrucción Type

Visual
Basic 6.0
 La instrucción Type se utiliza para establecer un tipo de datos definido por el usuario.
 


Visual Basic.NET
 

Los nombres Type y User-Defined Type resultan confusos, ya que las clases, enumeraciones e interfaces son también tipos que pueden ser definidos por los usuarios. Type y User-Defined Type son vestigios de QuickBasic, donde las estructuras y los registros eran los únicos tipos que podía definir el usuario. CLR utiliza el nombre Type en un sentido amplio para que incluya todos los tipos de datos.

Por este motivo, la instrucción Type cambia a Structure en Visual Basic.NET.
 


Asistente
actualización
 

Las instrucciones Type cambian a Structure, de modo que el siguiente código:

Type MyType
  MyVariable As Integer
  End Type
se actualiza a:

Structure MyType
  Dim MyVariable As Short
  End Structure
 

Almacenamiento de los tipos definidos por el usuario

Visual
Basic 6.0 Los tipos de datos definidos por el usuario pueden contener uno o varios elementos de un tipo de datos, una matriz o un anterior tipo definido por un usuario. En Visual Basic 6.0, se almacenan en bloques contiguos de memoria.
 


Visual Basic.NET
 
Este formato resulta de una mayor eficacia. Puede ser o no un bloque contiguo de memoria. Las estructuras se pueden marcar con atributos de ordenamiento para asegurarse de que pasan a los componentes COM como un bloque de memoria contiguo.
 


Asistente
actualización
 

Las API se marcan con un comentario TODO allí donde necesite agregar atributos de ordenamiento (atributos que no se agregan automáticamente; no son necesarios a menos que pase las estructuras a API).
 

True

Visual
Basic 6.0 True tiene el valor de –1.
 


Visual Basic.NET
 

True tiene el valor de 1.

Por motivos de interoperabilidad entre lenguajes, es necesaria una representación coherente entre todos los lenguajes.
 


Asistente
actualización
 

Cuando un objeto booleano se fuerza a un tipo no booleano, el código se marca con una advertencia de actualización. Por ejemplo, el siguiente código:

Dim MyBoolean As Boolean
  Dim MyInteger As Integer
  MyInteger = MyBoolean
se actualiza a:

Dim MyBoolean As Boolean
  Dim MyInteger As Short
  ' UPGRADE_WARNING: El valor booleano MyBoolean se va a convertir en numérico
  MyInteger = MyBoolean
 

Empty

Visual
Basic 6.0 Las variantes se inicializan en Empty, lo que automáticamente convierte en cero cuando se utiliza en una expresión numérica o en una cadena vacía cuando se usa en una expresión de cadena.
 


Visual Basic.NET
 

Las variables de objeto se inicializan en Nothing, lo que automáticamente convierte en cero cuando se utiliza en una expresión numérica o en una cadena vacía cuando se usa en una expresión de cadena. El uso de Nothing en lugar de un valor Empty especial reduce la complejidad del lenguaje y permite una mejor interoperabilidad entre lenguajes.
 


Asistente actualización
 

 
 

Null y propagación de Null

Visual
Basic 6.0 Los valores Null son subtipos de Variant que indican que una variable contiene datos no válidos. Los valores Null "se propagan" a través de las expresiones y las funciones. Si una parte cualquiera de una expresión se evalúa como Null, toda la expresión se evaluará como Null. Cuando se pasa Null como argumento a la mayoría de las funciones, dichas funciones devuelven Null.
 


Visual Basic.NET
 

No se admite la propagación de Null . El modelo de la programación de datos con ADO.NET consiste en comprobar explícitamente los campos en busca de Null antes de recuperar sus valores. Las variantes que contienen null se ordenan en CLR como objetos de tipo DBNull.

Con Visual Basic.NET, la regla de Null se convierte en más intuitiva: las funciones de cadenas, como Left(), siempre devuelven una cadena, tal y como debería esperarse.
 


Asistente
actualización
 

Los valores Null y las funciones IsNull se incluyen en un comentario con una advertencia de actualización. Por ejemplo, el siguiente código:

If x Is Null Then MsgBox "Null"
se actualiza a:

' UPGRADE_WARNING: Se ha detectado el uso de IsNull()
  If IsDBNull(x) Then MsgBox "Null"
 

Def<Type>

Visual
Basic 6.0 Las instrucciones DefBool, DefByte, DefInt, DefLng, DefCur, DefSng, DefDbl, DefDec, DefDate, DefStr, DefObj y DefVar se utilizan a nivel de módulo para establecer el tipo de datos predeterminado para las variables, parámetros y tipos de devolución de procedimientos cuyos nombres empiezan por los caracteres especificados.
 


Visual Basic.NET
 

Mejora la legibilidad y solidez del código al evitar el uso de declaraciones de tipos implícitas.
 


Asistente
actualización
 

Las declaraciones explícitas de los tipos de variable se insertan en el código. Por ejemplo, el siguiente código:

DefStr a-z
  Sub MySub
  s = "Hello"
  End Sub
se actualiza a:

Sub MySub
  Dim s As String
  s = "Hello"
  End Sub
 

Variables locales dentro de bloques

Visual
Basic 6.0 Las variables locales son visibles desde la línea que contiene la declaración al final del procedimiento.
 


Visual Basic.NET
 

Visual Basic.NET admite el ámbito de bloques de variables. Esto significa que una variable local se encuentra visible desde la línea que contiene la declaración al final del bloque donde aparece la declaración. Por ejemplo:

Sub Test(x As Integer)
  If x < 0 Then
  Dim y As Integer = - x
  '...
  Else
  '...
  End If
End Sub
La variable "y" del ejemplo anterior se encuentra disponible sólo dentro del bloque en el que está declarada; en concreto, está disponible sólo desde su declaración debajo de la instrucción Else. Si la variable es necesaria en todo el procedimiento, deberá declararse fuera de la estructura de control If/Else/End If.

El ámbito de bloque de las variables es una característica común a numerosos lenguajes estructurados. Al igual que locales de procedimiento admiten la programación estructurada al permitir la definición de variables que son específicas del procedimiento, las variables a nivel de bloque admiten la descomposición estructurada al permitir la definición de variables que son específicas de un bloque de código.
 


Asistente
actualización
 

Si las variables se declaran dentro de un bloque, éstas se trasladan automáticamente a un ámbito de nivel de módulos. Por ejemplo, el siguiente código:

If x =1 Then
    Dim y As Integer
  End If
se actualiza a:

Dim y As Integer
  If x =1 Then
  End If
 

Nueva reinstanciación automática

Visual
Basic 6.0 Una declaración de variable de clase con la forma Dim x As New <classname> provoca que el compilador genere código en cada referencia a x. Este código comprueba si x es Nothing; en el caso de que sea Nothing, se crea una nueva instancia de la clase. Por ejemplo, el código:

Dim x As New MyClass
  '...
  Call x.MyMethod()
es equivalente a:

Dim x As MyClass
  '...
  If x Is Nothing Then
    Set x = New MyClass
  End If
  Call x.MyMethod()
Incluso después de que la variable se establezca como Nothing, se reinstanciará en la siguiente llamada a la misma.
 


Visual Basic.NET
 

Una declaración de variable con la forma Dim x As New <classname> es equivalente a Dim x As <classname> = New <classname>. Para las referencias a variables que se declaran con esta sintaxis no se genera ningún código especial.

Las declaraciones de Visual Basic.NET para As New resultan mucho más eficaces que la misma declaración en Visual Basic 6.0. Para la mayoría de las referencias a dichas variables, no es necesaria información adicional. Además, el descubrimiento del comportamiento de la "instanciación automática" de Visual Basic 6.0 constituye una auténtica sorpresa para numerosos programadores.
 


Asistente
actualización
 

Rara vez constituye un problema. No obstante, si el código intenta utilizar una clase después de que se haya establecido como Nothing, se producirá una excepción en tiempo de ejecución fácilmente detectable. El código podrá entonces modificarse fácilmente para instanciar una nueva versión de la clase, como en el siguiente ejemplo:

Dim x As New MyClass
  x = Nothing
  x = New MyClass
 

Finalización de objetos

Visual
Basic 6.0 El mecanismo de recuento de referencias de COM se utiliza para recolectar elementos no utilizados de instancias de objetos. Una vez que los objetos no se encuentran en los ciclos, el recuento de referencias detectará de inmediato cuando un objeto ya no se utiliza y ejecutará su código de terminación.
 


Visual Basic.NET
 

Un recolector de elementos no utilizados se desplaza entre los objetos comenzando por la referencias almacenadas en pilas de variables, variables de módulo y variables compartidas. Este proceso de seguimiento se ejecuta como una tarea en segundo plano y, como resultado, puede transcurrir un período de tiempo indeterminado entre el momento en el que se elimina la última referencia a un objeto y se agrega una nueva referencia.

En algunos casos, los clientes no precisan la capacidad de forzar un objeto para liberar sus recursos. CLR utiliza la convención de que dicho objeto debe implementar la interfaz IDisposable, que proporciona un método Dispose. Cuando un cliente ha terminado de utilizar un objeto con el método Dispose, puede llamar de forma explícita al método Dispose para que se liberen sus recursos. Por ejemplo, un objeto que envuelve una conexión de base de datos debe exponer el método Dispose.

El recolector de seguimiento de elementos no utilizados puede liberar objetos de los ciclos de referencia adecuadamente. Además, el rendimiento de este recolector es mucho mayor que el del recuento de referencias.
 


Asistente
actualización
 

En la mayoría de los casos, este cambio no causará problemas. Si dispone de código que contiene un controlador de recursos abierto (conexiones o controladores de archivos), deberá cerrarlo de forma explícita. El problema se detecta con facilidad y produce un error en tiempo de ejecución.
 

Matrices

Visual
Basic 6.0 Las matrices se pueden definir con los enlaces inferiores y superiores de cualquier número entero. La instrucción Option Base se utiliza para determinar el enlace inferior predeterminado cuando no se ha especificado el intervalo en la declaración.
 


Visual Basic.NET
 

Para habilitar la interoperabilidad con otros lenguajes, todas las matrices deben disponer de un enlace inferior de cero. De este modo, se hace innecesaria la instrucción Option Base.
 


Asistente
actualización
 

ReDim

Visual
Basic 6.0 Visual Basic 6.0 distingue entre las matrices de tamaño fijo y las de tamaño variable. Las matrices de tamaño fijo se declaran con la instrucción Dim, que incluye los enlaces de la matriz dentro de esta declaración. Las matrices dinámicas se declaran en las instrucciones Dim al no especificar información sobre los enlaces. La matriz dinámica necesita entonces redimensionarse con la instrucción ReDim antes de que se pueda utilizar. En Visual Basic 6.0, la instrucción ReDim proporciona una forma abreviada de declarar y asignar espacio a una matriz dinámica dentro de una única instrucción. La instrucción ReDim es la única en Visual Basic 6.0 que se puede utilizar tanto para declarar como para inicializar variables.
 


Visual Basic.NET
 

La instrucción ReDim se utiliza únicamente para asignar o reasignar el espacio de una matriz, no para reasignar la matriz. Esto se debe a que todas las matrices de Visual Basic.NET son dinámicas, con lo que una instrucción Dim se puede utilizar en Visual Basic.NET tanto para declarar como para inicializar matrices dinámicas.

Debido a que todas las declaraciones de variables pueden declarar y especificar un valor inicial para las variables, el uso de ReDim tanto para declarar como inicializar variables se convierte en una operación redundante e innecesaria. Al exigir que únicamente se utilice la instrucción Dim para declarar variables, el lenguaje se simplifica y mejora la coherencia del mismo.
 


Asistente
actualización
 

Si se utiliza ReDim() para declarar una matriz, se insertará en el código la declaración adecuada. No obstante, se recomienda en primer lugar insertar uno mismo la instrucción Dim en la matriz, ya que el uso de ReDim para declarar una matriz se basa en la herramienta de actualización para inferir la declaración correcta. También se puede utilizar ReDim en código extraño, ya que la matriz se declara de forma idéntica en los dos lugares.
 

Asignación

Visual
Basic 6.0 Existen dos formas de asignación: Let (predeterminada) y Set.
 


Visual Basic.NET
 

Sólo existe una forma de asignación. x = y indica la asignación del valor de la variable o propiedad y a la variable o propiedad x. El valor de una variable de tipo de objeto es la referencia a las instancias de objetos, por tanto si x e y son variables de tipos de referencia, se realiza una asignación de referencias. Una sola forma de asignación reduce la complejidad del lenguaje y facilita la legibilidad del código.
 


Asistente actualización
 

Se eliminan las instrucciones Set y Let. Las propiedades predeterminadas para los objetos de tipos muy estrictos se resuelven y agregan de forma explícita al código.

Consulte el artículo Preparación de las aplicaciones de Visual Basic 6.0 para su actualización a Visual Basic.NET para obtener información completa sobre este tema.
 
http://www.microsoft.com/spanish/msdn/articulos/archivo/020301/voices/vb6tovbdotnet.asp

Operadores And, Or, Xor y Not

Visual
Basic 6.0 Los operadores And, Or, Xor y Not realizan tanto operaciones lógicas como a nivel de bits, dependiendo de las expresiones.
 


Visual Basic.NET
 

And, Or y Xor sólo se aplican al tipo booleano. Los operadores And y Or cortocircuitan la evaluación si el valor de su primer operando es suficiente para determinar el resultado del operador. Los nuevos operadores BitOr, BitAnd y BitXor se utilizan para las operaciones lógicas a nivel de bits. Los operadores Bitxxx no cortocircuitan.
 


Asistente
actualización
 

Si la instrucción And/Or no es booleana o contiene funciones, métodos o propiedades, se actualiza para utilizar una función de compatibilidad con el mismo comportamiento que Visual Basic 6.0. Si la instrucción And/Or es booleana se actualiza para utilizar la instrucción de Visual Basic.Net nativa.

Consulte el artículo Preparación de las aplicaciones de Visual Basic 6.0 para su actualización a Visual Basic.NET para obtener información completa sobre este tema.
 

Precedencia del operador

Visual
Basic 6.0 La precedencia de los operadores And, Or, Xor y Not lógicos y a nivel de bits es superior a la de los operadores de comparación.
 


Visual Basic.NET
 

La precedencia de los operadores And, Or, Xor y Not es inferior a la de los operadores de comparación, por lo que a > b And a < c se evaluará como (a > b) And (a < c). La precedencia de los nuevos operadores BitAnd, BitOr y BitXor es superior a la de los operadores de comparación, por lo que a BitAnd &HFFFF <> 0 se evaluará como ((a BitAnd &HFFFF) <> 0).

Puesto que BitAnd, BitOr y BitNot son operaciones que devuelven resultados numéricos, su precedencia es superior a la de los operadores relacionales, de modo que la precedencia predeterminada permite la comparación con otro valor de uno de estos operadores.
 


Asistente
actualización
 

Esta acción está controlada por el asistente para actualización. Consulte el artículo Preparación de las aplicaciones de Visual Basic 6.0 para su actualización a Visual Basic.NET para obtener información completa sobre este tema.
 
http://www.microsoft.com/spanish/msdn/articulos/archivo/020301/voices/vb6tovbdotnet.asp

Llamadas a procedimientos

Visual
Basic 6.0 Se admiten dos formas de llamadas a procedimientos: una que utiliza la instrucción Call y que requiere paréntesis en la lista de argumentos y otra sin la instrucción Call, que exige la no utilización de paréntesis en la lista de argumentos.

El desarrollador de Visual Basic 6.0 suele llamar a un procedimiento sin la palabra clave de llamada e intentar incluir paréntesis en la lista de argumentos. Afortunadamente, cuando exista más de un parámetro, el compilador lo detectará como un error de sintaxis. Sin embargo, cuando se proporciona un solo parámetro, el paréntesis del único argumento tendrá el efecto de pasar una variable de argumento como ByVal en lugar de ByRef. Esto puede causar problemas imperceptibles difíciles de descubrir.
 


Visual Basic.NET
 

Los paréntesis son ahora necesarios alrededor de las listas de argumentos en todos los casos.
 


Asistente actualización
 

Los paréntesis se insertan para las llamadas a procedimientos que no disponen de éstos.
 

Procedimientos estáticos

Visual
Basic 6.0 Los procedimientos se pueden declarar con la palabra clave Static, que indica que las variables locales del procedimiento se preservan entre las llamadas.
 


Visual Basic.NET
 

La palabra clave Static no se admite en el procedimiento y es necesario declarar todas la variables locales estáticas de forma explícita con la instrucción Static.

No resulta necesario que todas las variables dentro de un procedimiento sean estáticas. La eliminación de esta característica simplifica el lenguaje y mejora su legibilidad, ya que las variables locales se asignan de forma fija, a menos que se declaren de forma explícita como Static.
 


Asistente
actualización
 

Si un procedimiento se marca como Static, todas las declaraciones de variables locales cambian a Static.
 

Parámetro predeterminado ByVal/ByRef

Visual
Basic 6.0 Los parámetros que no se especifican como ByVal o ByRef adoptan de forma predeterminada el valor ByRef.
 


Visual Basic.NET
 

Los parámetros que no se especifican como ByVal o ByRef adoptan de forma predeterminada el valor ByVal.

El valor predeterminado de ByVal en lugar de ByRef elimina el problema de que un procedimiento modifique por error una variable pasada por el llamador. Asimismo, la convención de llamada predeterminada resulta más coherente con la asignación, ya que dichos parámetros se enlazan de forma eficaz a la expresiones pasadas por una asignación de la expresión en el parámetro formal.

Tenga en cuenta que para evitar confusiones a los usuarios que cambian de Visual Basic 6.0 a Visual Basic.NET, IDE agregará automáticamente la palabra clave ByVal en todas las declaraciones de parámetros que el usuario introduzca sin especificar de forma explícita ByVal o ByRef.
 


Asistente
actualización
 

ByRef se agrega a los parámetros que no disponen del modificador ByVal ni ByRef.
 

IsMissing y parámetros opcionales

Visual
Basic 6.0 Los parámetros opcionales Variant con valores no predeterminados se inicializan en un código de error especial que se puede detectar con la función IsMissing.
 


Visual Basic.NET
 

Visual Basic.NET requiere que se especifique un valor predeterminado para todos los parámetros opcionales. De este modo, se simplifica el lenguaje al reducir el número de valores especiales del lenguaje.
 


Asistente
actualización
 

Las funciones IsMissing se sustituyen por IsNothing y se incluyen en un comentario con una advertencia de actualización.
 

Parámetros ParamArray

Visual
Basic 6.0 Cuando las variables pasan a un argumento ParamArray, éstas se pueden modificar con la función llamada. No se admiten los elementos ByVal ParamArray.
 


Visual Basic.NET
 

Cuando las variables pasan al argumento ParamArray, éstas no se pueden modificar con la función llamada. No se admiten los elementos ByRef ParamArray.

Un escenario más frecuente de los argumentos ParamArray consiste en no modificar las variables que pasan a los mismos. La no admisión de los argumentos ByRef ParamArray simplifica la convención de llamada ParamArray al convertir argumentos ParamArray en matrices normales. De este modo, permite que los argumentos ParamArray se extiendan a cualquier tipo de elemento y permite que las funciones esperen la llamada directa a los argumentos ParamArray con una matriz en lugar de una lista de argumentos.
 


Asistente
actualización
 

Los argumentos ParamArray se incluyen en un comentario con una advertencia de actualización. Por ejemplo, el siguiente código:

Function MyFunction(ParamArray p() As Variant)
  '...
  End Function
se actualiza a:

' UPGRADE_WARNING: ParamArray p se ha modificado de ByRef a ByVal
  Function MyFunction(ByVal ParamArray p() As Object)
  '...
  End Function
 

Parámetros As Any en declaraciones

Visual
Basic 6.0 El parámetro de una API nativa podría declararse como As Any, en cuyo caso una llamada a la API nativa podría pasar en cualquier tipo de datos. Se ha admitido esta compatibilidad para permitir la llamada a aquellas API cuyos parámetros admitan dos o más tipos de datos.
 


Visual Basic.NET
 

Se pueden definir las instrucciones Declare sobrecargadas para que permitan la llamada a una API nativa con dos o más tipos de datos. Por ejemplo, la siguiente instrucción Declare :

Private Declare Function GetPrivateProfileString _
  Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
    ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString As String, _
    ByVal nSize As Long, _
    ByVal lpFileName As String) As Long
podría sustituirse por dos versiones Declare, una que aceptara "a" y otra que aceptara una cadena:

Overloads Private Declare Function GetPrivateProfileStringKey _
Lib "kernel32" Alias "GetPrivateProfileStringA" ( _
    ByVal lpApplicationName As String, _
    ByVal lpKeyName As String, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString As String, _
    ByVal nSize As Long, _
    ByVal lpFileName As String) As Long
Overloads Private Declare Function GetPrivateProfileStringNullKey _
    Lib "kernel32" Alias"GetPrivateProfileStringA" ( _
    ByVal lpApplicationName As String, _
    ByVal lpKeyName As Long, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString As String, _
    ByVal nSize As Long, _
    ByVal lpFileName As String) As Long
De este modo, se mejora la seguridad de los tipos y se reducen las posibilidades de error que causaría el mal funcionamiento del programa. Esto podría tener lugar debido a que el compilador no permitirá la llamada a la API con otros tipos de datos que no sean los que se hayan definido explícitamente para su aceptación.
 


Asistente
actualización
 

Las instrucciones Declare que utilizan los parámetros As Any se incluyen en un comentario con una advertencia de actualización.
 

Instrucciones Implements

Visual
Basic 6.0 La instrucción Implements especifica una interfaz o clase que se implementará en el módulo de clase en el que aparece.

 
 


Visual Basic.NET
 

Implements en Visual Basic.NET es distinto a Visual Basic 6.0 por dos motivos principales:

Las clases no se pueden especificar en instrucciones Implements.
Cada método que implementa, requiere una cláusula Implements al final de la instrucción de declaración de método. De este modo, se especificará el método de interfaz que implementa.
Al exigir una cláusula Implements en cada método que implemente un método de una interfaz, se produce una mejora de la legibilidad. Resulta evidente, cuando se lee el código, que el método se utiliza para implementar un método de interfaz.
 


Asistente
actualización
 

Si la clase a implementa la clase b, la interfaz se declara para la clase b y la clase a cambia para implementar la interfaz de la clase b:

Interface _b
      Function MyFunction() As String
  End Interface
  Class a
      Implements _b
      Function b_MyFunction() As String Implements _b.MyFunction
  End Function
  End Class
 

Propiedad

Visual
Basic 6.0 En Visual Basic 6.0, las funciones de propiedades Get, Let y Set de una propiedad determinada se pueden declarar con distintos niveles de accesibilidad. Por ejemplo, la función Property Get puede ser Public mientras que Property Let puede ser Friend.
 


Visual Basic.NET
 

Las funciones Get y Set de una propiedad deben disponer ambas del mismo nivel de accesibilidad. De este modo, permite que Visual Basic.NET interopere con otros lenguajes .NET.
 


Asistente
actualización
 

Si hay un nivel distinto accesibilidad, la nueva propiedad es Public.
 

Propiedades predeterminadas

Visual
Basic 6.0 Cualquier miembro se puede marcar como predeterminado de una clase.
 


Visual Basic.NET
 

Sólo las propiedades que adoptan parámetros se pueden marcar como predeterminadas. Es frecuente que las propiedades con parámetros sean indexadoras en una colección.

De este modo, el código se vuelve más legible, ya que una referencia a una variable de objeto sin miembros siempre hace referencia al objeto en sí, en lugar de al objeto en algunos contextos y al valor de propiedad predeterminado en otros. Por ejemplo, una instrucción Call Display(TextBox1) podría estar pasando la instancia de cuadro de texto en la función Display o los contenidos del cuadro de texto.

Además, al eliminar esta ambigüedad, desaparece la necesidad de una declaración distinta para realizar la asignación de referencia. Una asignación x = y siempre significa asignar el contenido de la variable y a la variable x, en lugar de asignar la propiedad predeterminada del objeto al que hace referencia y a la propiedad predeterminada del objeto al que hace referencia x.
 


Asistente
actualización
 

Las propiedades predeterminadas se resuelven donde es posible. Los comentarios de error se agregan donde no se pueden resolver (en objetos de enlace finales).
 

Enumeraciones

Visual
Basic 6.0 Se puede hacer referencia a las constantes de enumeración sin cualificación.
 


Visual Basic.NET
 

Se puede hacer referencia a las constantes de enumeración sin cualificación si se agrega un elemento Import a la enumeración en el nivel de proyecto o archivo.

De este modo, se mantiene la coherencia con las clases, estructuras e interfaces a cuyos miembros se les pueden asignar nombres genéricos sin riesgo de conflicto con otros miembros. Por ejemplo, la enumeración Color y la enumeración Fruit pueden contener ambas una constante denominada Orange. En Visual Basic 6.0, la convención de prefijación de las constantes de enumeración las convierte en únicas, lo que lleva a extraños nombres como MsColorOrange y MsFruitOrange.
 


Asistente
actualización
 

Las referencias a enumeraciones se modifican para estar totalmente cualificadas.
 

Instrucciones While

Visual
Basic 6.0 Las instrucciones While finalizan con una instrucción WEnd.
 


Visual Basic.NET
 

Para guardar coherencia con otras estructuras de bloque, la instrucción de terminación de While es ahora End While. De este modo, mejora la coherencia y legibilidad del lenguaje.
 


Asistente
actualización
 

Las instrucciones WEnd se modifican a End While.
 

On…GoTo y On…GoSub

Visual
Basic 6.0  Las instrucciones On expression GoTo destinationlist y On expression GoSub destinationlist se ramifican en una de las distintas líneas de la lista de destino, dependiendo del valor de la expresión.
 


Visual Basic.NET
 

On…GoTo y On…GoSub son construcciones de programación no estructuradas. Su uso dificulta la legibilidad y comprensión de los programas. Select Case puede proporcionar una forma más estructurada y flexible de realizar varias ramificaciones.

Nota: On Error GoTo se sigue admitiendo.
 


Asistente
actualización
 

El siguiente ejemplo:

On MyVariable GoTo 100,200,300
se incluye en un comentario con un error de actualización:

' UPGRADE_ISSUE On MyVariable GoTo no se ha actualizado
  On MyVariable GoTo 100,200,300
Debe escribir de nuevo el código para evitar dichas instrucciones. por ejemplo:

On x Goto 100,200,300
se puede reescribir de la siguiente forma:

Select Case x
      Case 1: 'Insertar el código para la línea 100
      Case 2: 'Insertar el código para la línea 200
      Case 3: 'Insertar el código para la línea 300
  End Select
 

GoSub…Return

Visual
Basic 6.0 La instrucción GoSub line … Return se ramifica y vuelve de una subrutina dentro de un procedimiento.
 


Visual Basic.NET
 

GoSub…Return es una construcción de programación no estructurada. Su uso dificulta la legibilidad y comprensión de los programas. La creación de procedimientos separados que se pueden llamar podrían proporcionar una alternativa más estructurada.
 


Asistente
actualización
 

Como con On...GoTo, estas instrucciones se incluyen en un comentario con un error de actualización.
 

LSet

Visual
Basic 6.0 LSet rellena una cadena con espacios para convertirla en una longitud determinada o copia una variable de un tipo definido por el usuario en una variable de otro tipo definido por el usuario.
 


Visual Basic.NET
 

No se admite la instrucción LSet. LSet no constituye un tipo seguro, por lo que puede dar como resultado errores en tiempo de ejecución. Asimismo, debido a la falta de seguridad del tipo, requiere una total confianza para su ejecución. Al eliminar la instrucción LSet, se evita la posibilidad de copiar una estructura sobre otra; sin embargo, puede conseguir el mismo efecto si se modifica el código Visual Basic.NET para que utilice RtlCopyMemory.
 


Asistente
actualización
 

Esta instrucción:

LSet a1 = a2
se incluye en un comentario con un error de actualización

' UPGRADE_ISSUE: LSet no puede asignar UDT de un tipo a otro
  LSet a1 = a2
 

VarPtr, StrPtr y ObjPtr

Visual
Basic 6.0  VarPtr, StrPtr y ObjPtr devuelven las direcciones de las variables como enteros, que se pueden pasar a las funciones API que adoptan direcciones, como RtlCopyMemory. VarPtr devuelve la dirección de una variable, StrPtr devuelve la dirección de una cadena y ObjPtr la dirección de un objeto. No existe documentación sobre estas funciones.
 


Visual Basic.NET
 

Las direcciones de los elementos de datos se pueden recuperar, pero esta recuperación debe realizarse a través de llamadas en CLR. Esto se debe a que CLR suele tener libertad para mover elementos dentro de la memoria, por lo que necesita saber cuando no debe mover el elemento mientras se está utilizando la dirección. El siguiente ejemplo recupera la dirección de un objeto:

Dim MyGCHandle As GCHandle = GCHandle.Alloc(o,GCHandleType.Pinned)
Dim Address As Integer = CInt(MyGCHandle.AddrOfPinnedObject())
'...
MyGCHandle.Free() 'permite que la instancia de objeto se mueva de nuevo
Al permitir que los elementos de datos se muevan con el tiempo de ejecución mejora el rendimiento del tiempo de ejecución.
 


Asistente
actualización
 

No existe la actualización automática para estas instrucciones, por lo que se incluyen en un comentario con un error de actualización "No se admite (instrucción)". Por ejemplo, el siguiente código:

a = VarPtr(b)
se actualiza a:

' UPGRADE_ISSUE: No se admite Function VarPtr()
  a = VarPtr(b)
Esto también provoca un error de compilación.
 

E/S de archivo

Visual
Basic 6.0 Las instrucciones de E/S de archivo se incluyen en el lenguaje.
 


Visual Basic.NET
 

Las operaciones de E/S de archivo se encuentran disponibles a través de bibliotecas de clases. La eliminación de las instrucciones de E/S de archivo del lenguaje facilita el uso de distintas bibliotecas de E/S de Visual Basic.NET. Esto resultaría bastante más extraño si las instrucciones de E/S estuvieran en el lenguaje, los identificadores Open, Close, Print y Write serían palabras reservadas.
 


Asistente
actualización
 

Las instrucciones de E/S de archivo se actualizan en las funciones correspondientes. Por ejemplo, el siguiente código:

Open nput )
 

Debug.Print

Visual
Basic 6.0  Debug.Print extrae una línea de texto en la ventana Immediate.
 


Visual Basic.NET
 


Debug.WriteLine extrae una línea de texto en la ventana Output. Existe también un método Debug.Write que extrae texto en la ventana Output sin salto de página.
 


Asistente
actualización
 

Debug.Print se actualiza a Debug.WriteLine.
 

Archivos de recurso

Visual
Basic 6.0 Visual Basic 6.0 admite un archivo .res por proyecto.
 


Visual Basic.NET
 

Visual Basic.NET admite una gran variedad de recursos. Se pueden enlazar formularios para recuperar recursos de forma automática de los nuevos archivos de recursos con formato .resX. Cualquier clase CLR se puede almacenar en un archivo .resX.
 


Asistente
actualización
 

Los archivos se actualizan de .res a .resX y se modifica el código para que se cargue de los archivos .resX.
 

Aplicaciones de Windows


Formularios de Visual Basic

Visual
Basic 6.0 Visual Basic 6.0 dispone de su propio paquete de formularios para crear aplicaciones gráficas de Windows.
 


Visual Basic.NET
 

Windows Forms (Formularios de Windows) es un nuevo paquete de formularios para Visual Basic.NET. Debido a que los formularios de Windows se integran totalmente en el tiempo de ejecución en lenguaje común (CLR), puede aprovechar al máximo todas sus características. En especial, debido a que el paquete de formularios de Windows se beneficia de las características de distribución, aislamiento de aplicaciones, aplicación de versiones y seguridad de acceso al código, puede ahora crear aplicaciones cliente basadas en Windows que son mucho más fáciles de distribuir y actualizar. Puede incluso crear aplicaciones de formularios de Windows que tengan las mismas características de distribución de explorador que HTML. Estas características, como el control granular de seguridad de acceso al código, también hacen conveniente el uso de controles de formularios de Windows en el explorador.

El conjunto de formularios de Windows también ofrece a los desarrolladores de Visual Basic multitud de nuevas características, como la compatibilidad con la herencia visual, la localización mejorada y la accesibilidad, el ajuste de tamaño automático de formularios y un editor de menús en el sitio.
 


Asistente
actualización
 

Los formularios de Visual Basic se actualizan a formularios de Windows.
 

Método PrintForm

Visual
Basic 6.0 El método PrintForm envía una imagen bit a bit de un objeto Form a la impresora. Sin embargo, esta característica de impresión no funciona correctamente en algunos formularios.
 


Visual Basic.NET
 

En los formularios de Windows, Visual Basic.NET dispone de un marco de impresión que permite crear rápidamente complejos documentos de impresión. Asimismo, incluye un cuadro de diálogo Print Preview.
 


Asistente
actualización
 

Las llamadas al método PrintForm se incluyen en un comentario con un error de actualización. Puede utilizar el nuevo marco de impresión para crear un documento de impresión, o bien, puede incluso capturar una imagen de la ventana de la aplicación e imprimirla.
 

Métodos Circle, Cls, PSet, Line y Point

Visual
Basic 6.0 Los métodos Circle, Cls, PSet, Line y Point permiten dibujar gráficos en un formulario, así como eliminarlos.
 


Visual Basic.NET
 

Los formularios de Windows disponen de un nuevo conjunto de comandos de gráficos que sustituye a los métodos de formulario Circle, Cls, PSet, Line y Point. El paquete de formularios del Windows se integra por encima de GDI+, una biblioteca de gráficos y texto bidimensional rico en características al que se puede tener acceso directo desde Visual Basic.NET. Los programadores de Visual Basic no han podido tener acceso a estos tipos de características en versiones anteriores sin tener que desplegar instrucciones Declare y API GDI. Mientras la curva de aprendizaje es un poco más alta, la flexibilidad y eficacia de GDI+ permitirá a los programadores desarrollar de forma rápida aplicaciones que llevarían un gran esfuerzo en anteriores versiones de Visual Basic.
 


Asistente
actualización
 

Las llamadas a estos métodos se incluyen en un comentario con un error de actualización. Puede escribir las llamadas a gráficos mediante el uso de las clases GDI+ en System.Drawing.
 

Propiedad Name

Visual
Basic 6.0 La propiedad Name devuelve el nombre utilizado en el código para identificar un objeto formulario, control o acceso de datos. Es de sólo lectura en tiempo de ejecución.
 


Visual Basic.NET
 

Los formularios de Windows no admiten la propiedad Name para los formularios y controles en tiempo de ejecución. Si necesita repetir la colección Controls para encontrar un control con un determinado nombre, puede utilizar las clases System.Reflection de .NET Framework para encontrarla.
 


Asistente
actualización
 

El uso de la propiedad Name en los controles se incluye en un comentario con un error de actualización.
 

Propiedad Caption

Visual
Basic 6.0  Algunos controles, como Label, disponen de la propiedad Caption que determina el texto mostrado en o junto al control. Otros controles, como TextBox, disponen de la propiedad Text que determina el texto contenido en el control.
 


Visual Basic.NET
 

En los formularios de Windows, la propiedad que muestra texto en el control se denomina Text en todos los controles. De este modo, se simplifica el uso de los controles.
 


Asistente
actualización
 

Las propiedades Caption de los controles se cambian a Text.
 

Propiedad Tag

Visual
Basic 6.0 La propiedad Tag devuelve o establece una expresión que almacena los datos adicionales necesarios para su programa.

En Visual Basic 6.0, necesita la propiedad Tag porque no puede ampliar los controles integrados.
 


Visual Basic.NET
 

En los formularios de Windows, puede utilizar la herencia para ampliar los controles integrados y agregar sus propias propiedades. Al poder disponer de la herencia como herramienta, flexibiliza de forma significativa los controles integrados. No solo puede agregar todas las propiedades que desee, también puede hacer que todas esas propiedades sean de tipo muy estricto.
 


Asistente
actualización
 

Un control Tag extensor de formularios de Windows en una biblioteca de compatibilidad se utiliza para proporcionar la misma funcionalidad.
 

Propiedad ScaleMode

Visual
Basic 6.0 La propiedad ScaleMode devuelve o establece un valor que indica la unidad de medida de las coordenadas de un objeto cuando se utilizan métodos de gráficos o al ubicar los controles.
 


Visual Basic.NET
 

Los formularios de Windows simplifican el diseño de formularios al realizar siempre las medidas en píxeles.

Además, los formularios de Windows disponen de un método mejorado de controlar el ajuste de tamaño. La propiedad AutoScaleBaseSize ajusta automáticamente la escala según la resolución (ppp) de la pantalla y el tamaño de fuente que utiliza.
 


Asistente
actualización
 

El código que utiliza 'twips' (el valor predeterminado de ScaleMode de Visual Basic 6.0) se actualiza perfectamente. Si ScaleMode no es twips, surgirán problemas de ajuste de tamaño.

Consulte el artículo Preparación de las aplicaciones de Visual Basic 6.0 para su actualización a Visual Basic.NET para obtener información completa sobre este tema.
 

Fuentes

Visual
Basic 6.0 Los formularios y controles pueden utilizar cualquier fuente de Windows.
 


Visual Basic.NET
 

Los formularios y controles pueden utilizar sólo fuentes TrueType o OpenType. Estos tipos de fuentes resuelven multitud de inconsistencias entre las distintas versiones de los sistemas operativos y sus versiones localizadas. Estas fuentes también proporcionan características, como independencia de resolución de los dispositivos y el alisamiento de bordes.
 


Asistente
actualización
 

Si dispone de fuentes que no son TrueType en la aplicación, éstas se cambiarán a la fuente predeterminada de Windows Forms; sin embargo, se perderá el formato (tamaño, negrita, cursiva, subrayado).
 

Propiedad Screen.MousePointer

Visual
Basic 6.0 La propiedad MousePointer en el objeto Screen devuelve o establece un valor que indica el tipo de puntero de mouse mostrado cuando el mouse está fuera de los formularios de la aplicación en el tiempo de ejecución.
 


Visual Basic.NET
 

El puntero del mouse se puede manipular para los formularios dentro de la aplicación, pero no cuando está fuera. Trataremos esta característica en una futura versión.
 


Asistente
actualización
 

El uso de Sceen.MousePointer se incluye en un comentario con un error de actualización.
 

Propiedad Timer.Interval

Visual
Basic 6.0 La propiedad Interval de un control Timer devuelve o establece el número de milisegundos entre las llamadas al evento Timer. Si se establece en 0, deshabilita el control Timer. La propiedad Enabled también determina si se está ejecutando el cronómetro. Esto es confuso, ya que incluso cuando la propiedad Enabled es True, el temporizador no se habilitará si el intervalo es 0.
 


Visual Basic.NET
 

La propiedad Interval indica el tiempo, en milisegundos, entre los segundos del cronómetro. Esta propiedad no se puede establecer como 0. La propiedad Enabled indica si se está ejecutando el cronómetro. De este modo, se proporciona un comportamiento más intuitivo para simplificar la codificación con objetos Timer.
 


Asistente
actualización
 

Donde el asistente para actualización pueda detectar que Timer.Interval está establecido como 0, se incluirá en un comentario con un error de actualización.

Se recomienda que utilice Timer.Enabled en las aplicaciones Visual Basic 6.0, ya la actualización se realiza perfectamente.
 

Matrices de control

Visual
Basic 6.0 Una matriz de control es un grupo de controles que comparten el mismo nombre y tipo. Además, comparten los mismos procedimientos de eventos. Una matriz de control dispone de al menos un elemento y se puede ampliar hasta los elementos que permitan la memoria y los recursos del sistema. Los elementos de la misma matriz de controles disponen de su propia configuración de propiedades.
 


Visual Basic.NET
 

La arquitectura de Windows Forms controla de forma nativa multitud de escenarios en los que se utilizan matrices de controles. Por ejemplo, en los formularios de Windows se puede controlar más de un evento en varios controles con un controlador de eventos único.
 


Asistente
actualización
 

Un control extensor Control Array Windows Forms en la biblioteca de compatibilidad proporciona esta característica.
 

Controles Menu

Visual
Basic 6.0 Un control Menu representa cada elemento en un árbol de menús. La misma instancia de control Menu se puede utilizar de forma simultánea como menú principal o menú contextual.
 


Visual Basic.NET
 

Un control MenuItem representa cada elemento de un árbol de menús. El control MenuItem se puede agregar al elemento MainMenu o ContextMenu, pero no los dos a la vez. Puede utilizar el método CloneMenu en MenuItem para crear una copia si desea compartir un menú entre un objeto MainMenu y ContextMenu.
 


Asistente
actualización
 

El uso de menús contextuales se incluye en un comentario con un error de actualización. Puede utilizar MenuItem.CloneMenu para realizar una copia del elemento MainMenu para su uso como elemento ContextMenu.
 

Control contenedor OLE

Visual
Basic 6.0  El control contenedor OLE permite agregar objetos OLE a los formularios.
 


Visual Basic.NET
 

No hay ningún contenedor OLE en Visual Basic.NET. Si necesita el equivalente del control contenedor OLE, puede agregar el control WebBrowser a un formulario y utilizarlo como control contenedor OLE.
 


Asistente
actualización
 

Se agrega un error en el informe de actualización y se incluye en el formulario un marcador de posición de control incompatible.
 

Control de imágenes

Visual
Basic 6.0 Los controles Image y PictureBox muestran un gráfico de un archivo GIF, JPEG, metarchivo, metarchivo mejorado, icono o mapa de bits.
 


Visual Basic.NET
 

El control PictureBox de Visual Basic.NET reemplaza a los controles PictureBox e Image de Visual Basic 6.0. El control PictureBox de los formularios de Windows admite también archivos GIF animados. Sin embargo, si necesita una solución provisional para diseñar una imagen en un formulario, puede omitir el evento OnPaint para el formulario y utilizar el método DrawImage.
 


Asistente
actualización
 

Los controles de imágenes cambian a controles PictureBox.
 

Controles Line y Shape

Visual
Basic 6.0  El control Line muestra una línea horizontal, vertical o diagonal. El control Shape muestra un rectángulo, cuadrado, elipse, círculo, rectángulo redondeado o un cuadrado redondeado.
 


Visual Basic.NET
 

Las clases GDI+ de System.Drawing sustituyen a los controles Line y Shape. Si desea dibujar formas en el formulario, anule el evento OnPaint y pinte círculos, cuadrados, etc. utilizando los métodos Draw de GDI+.
 


Asistente
actualización
 

Los controles Line horizontal y vertical cambian a controles Label (sin texto, con la altura o ancho establecido como 1). Las líneas diagonales producen un error en el informe y se incluye un marcador de posición de control incompatible en el formulario.

Los controles Shape de rectángulo y cuadrado cambian a controles Label. Otros controles Shape producen un error en el informe y se incluye un marcador de posición de control incompatible en el formulario.
 

Controles Windowless

Visual
Basic 6.0 Los controles ligeros, algunas veces denominados controles sin ventanas, se diferencian de los controles normales por un motivo principal: no disponen de controlador de ventana (propiedad hWnd). Debido a ello, utilizan menos recursos del sistema. Puede crear un control de usuario ligero al establecer la propiedad Windowless como True en el tiempo de diseño. Los controles de usuario ligero sólo pueden contener otros controles ligeros. No todos los contenedores admiten controles ligeros.
 


Visual Basic.NET
 

La mayoría de los controles sin ventana adoptarán de forma predeterminada la ventana cuando se utilicen en los formularios de Windows. La principal ventaja de utilizar controles sin ventana consiste en que se reduce el consumo de recursos (controles de ventana) cuando se dispone de un gran número de controles en un formulario. Esto se aplica únicamente a Windows 9x. Microsoft Windows NT® y Microsoft Windows 2000 no presentan estas restricciones de recursos.

Mientras que hay desventajas al utilizar controles sin ventana (problemas de diseño como los de capas), Microsoft reconoce el valor de los mismos y emitirá ejemplos que muestran la forma de conseguir efectos similares en los formularios de Windows.
 


Asistente
actualización
 

No es necesaria ninguna acción especial.
 

Objeto Clipboard

Visual
Basic 6.0 El objeto Clipboard proporciona acceso al portapapeles del sistema.
 


Visual Basic.NET
 

La clase Clipboard proporciona métodos para colocar y recuperar datos del portapapeles del sistema. La nueva clase Clipboard ofrece una mayor funcionalidad y admite más formatos de portapapeles que el objeto Clipboard de Visual Basic 6.0. El modelo de objeto se ha reestructurado para admitirlos.
 


Asistente
actualización
 

El código de portapapeles existente no se puede actualizar de forma automática debido a las diferencias entre los modelos de objeto. Las instrucciones Clipboard se incluyen en un comentario con un error de actualización.
 

Intercambio dinámico de datos

Visual
Basic 6.0 Determinados controles tienen propiedades y métodos que admiten conversaciones DDE (Intercambio dinámico de datos).
 


Visual Basic.NET
 

Los formularios de Windows no disponen de soporte DDE integrado.
 


Asistente
actualización
 

Las propiedades y métodos DDE se incluyen en un comentario con una advertencia de actualización.
 

Aplicaciones Web


WebClasses

Visual
Basic 6.0 WebClass es un componente de Visual Basic que reside en un servidor Web y responde a la entreda desde el explorador. Normalmente, WebClass contiene WebItems que utiliza para proporcionar contenido al explorador y exponer eventos.
 


Visual Basic.NET
 

Web Forms es una característica de .NET Framework que puede utilizar para crear una interfaz de usuario basada en el explorador para las aplicaciones Web. Visual Basic.NET dispone de un diseñador WYSIWYG para la creación de formularios Web gráficos utilizando controles de la caja de herramientas. De esta forma, el desarrollo de la interfaz de usuario Web es similar al desarrollo en Windows. Además, cuando se crea un proyecto, no es necesario detener y reiniciar el servidor Servicios de Internet Information Services (IIS) para distribuir los nuevos bits, como ocurre con WebClasses.
 


Asistente
actualización
 

WebClasses se actualizan a Web Forms. Todas las llamadas de almacenamiento de estado se incluyen en un comentario con una advertencia de actualización. Éstas se pueden reescribir para aprovechar las características de administración de estados de ASP.NET.

Asimismo, puede elegir dejar las aplicaciones WebClass en Visual Basic 6.0 y explorar desde un formulario Web de Visual Basic.NET a WebClass, a un WebForm, etc.
 

Documentos ActiveX y aplicaciones DHTML
br> Visual
Basic 6.0 Los documentos ActiveX® pueden aparecer dentro de las ventanas del explorador de Internet y ofrecer el desplazamiento integrado en el área de visualización, hipervínculos y negociación de menús. Las aplicaciones DHTML contienen páginas DHTML y DLL de ActiveX del lado del cliente.
 


Visual Basic.NET
 

Los formularios Web son compatibles con aplicaciones de amplio alcance a través de HTML estándar. Las aplicaciones ricas se pueden admitir de una forma más segura si utilizan los controles de los formularios de Windows alojados en un explorador o con un EXE de "Windows Form seguro" descargado. Este código se ejecuta dentro de un sandbox seguro, para que no pueda dañar al equipo de un usuario.
 


Asistente
actualización
 

Mientras que los documentos ActiveX y aplicaciones DHTML no se puede actualizar directamente, se puede seguir explorando entre documentos ActiveX, aplicaciones DHTML y formularios Web.
 

Datos


Código ADO, RDO y DAO

Visual
Basic 6.0 Los objetos ADO (ActiveX® Data Object), RDO (Remote Data Object) y DAO


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines