Cómo administrar multilenguaje soluciones de formularios Windows Forms en Visual Studio .NET o en Visual Studio 2005

Seleccione idioma Seleccione idioma
Id. de artículo: 315838 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo muestra cómo crear una pequeña aplicación multilingüe de Windows. La aplicación principal se genera en Visual Basic .NET o Visual Basic 2005. Esta aplicación de Visual Basic utiliza una biblioteca de clases C# Visual componente para ilustrar las referencias de multilenguaje y herencia de implementación.

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los service pack recomendados que se necesitarán:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional o Microsoft Windows XP Server con Microsoft .NET Framework instalada
  • Microsoft Data Engine (MSDE) o Microsoft SQL Server 7.0 o posterior con la base de datos Northwind
En este artículo se supone que está familiarizado con los temas siguientes:
  • Herencia de implementación
  • Formularios Windows Forms
  • Microsoft ADO.NET

Crear una aplicación Windows multilingüe

Estos pasos muestran cómo crear una pequeña aplicación multilingüe de Windows. Al hacer clic en un botón, puede ver todos los productos de la base de datos Northwind en un control DataGrid .
  1. Cree un proyecto de aplicación para Windows de Visual Basic como sigue:
    1. Inicie Visual Studio.NET o Microsoft Visual Studio 2005 y, a continuación, haga clic en Nuevo proyecto .
    2. En Tipos de proyecto , haga clic en Proyectos de Visual Basic . En plantillas , haga clic en Aplicación para Windows . Cambie el nombre del proyecto MultiLangHowTo y, a continuación, haga clic en Aceptar .

      Nota En Visual Studio 2005, haga clic en Visual Basic bajo Tipos de proyecto .
  2. Asegúrese de que la ventana Explorador de soluciones está visible. Si no está, haga clic en El Explorador de soluciones en el menú Ver .
  3. Ahora tiene el shell de una aplicación Visual Basic .NET o Visual Basic 2005 Windows Forms dentro de una solución denominada MultiLangHowTo. Para hacerlo de una solución de varios idiomas, debe agregar una biblioteca de clases C# Visual.

    En la ventana Explorador de soluciones, haga clic con el botón secundario del mouse en MultiLangHowTo , elija Agregar y, a continuación, haga clic en Nuevo proyecto . En Tipos de proyecto , haga clic en Proyectos de Visual C# . En plantillas , haga clic en Biblioteca de clases . Cambiar el nombre de biblioteca de clases NWClassLib . Haga clic en Aceptar para agregar esta biblioteca de clase a la solución.

    Nota Haga clic en Visual Studio 2005, en C# en Tipos de proyecto.
  4. Class1.cs aparece en la ventana de editor. Agregue las siguientes declaraciones de espacio de nombres a la parte superior de esta ventana. Estas declaraciones permiten tener acceso a distintas clases por lo que puede crear y llenar un objeto DataSet .
    using System.Data;
    using System.Data.SqlClient;
    					
  5. Reemplazar el método Class1 con el código siguiente, que crea y rellena un DataSet con todos los datos de la tabla de productos de Northwind:
    public static DataSet GetProducts()
    {
       DataSet ds = new DataSet();
       SqlDataAdapter sqlDS = new SqlDataAdapter(
          "select * from products", new SqlConnection(
          "server=(local);database=northwind;Integrated Security=SSPI"));
       sqlDS.Fill(ds);
       return ds;
    } 
    						
    Nota : el sistema de desarrollo puede requerir una cadena de conexión de SQL diferente. Si se producen problemas, consulte al administrador del sistema.
  6. Ahora puede crear Windows Forms de Visual Basic aplicación que consuma este componente. Form1.vb ya debería estar abierto en la vista Diseño. Si no es así, haga doble clic en Form1.vb en la ventana Explorador de soluciones.
  7. Agregue un control Button y un control DataGrid al formulario como sigue:
    1. En el menú Ver , haga clic en cuadro de herramientas para abrir el cuadro de herramientas. Como alternativa, puede presionar CTRL + ALT + X clave de combinación para abrir el cuadro de herramientas.
    2. En el cuadro, haga clic en Formularios Windows Forms .
    3. Agregue un control Button al formulario.
    4. Presione la tecla F4 tener acceso a la página de propiedades para el control Button . Cambie la propiedad Text para Mostrar los productos .
    5. Agregue un control DataGrid al formulario.
  8. Agregue de manera una referencia de proyecto al componente NWClassLib:
    1. En la ventana Explorador de soluciones, bajo MultiLangHowTo , haga clic con el botón secundario en referencias y, a continuación, haga clic en Agregar referencia .
    2. En la ficha proyectos , haga doble clic en NWClassLib . Observe que NWClassLib aparece en el cuadro de lista de Componentes seleccionados .
    3. Haga clic en Aceptar . Observe que NWClassLib aparece bajo referencias para la aplicación de Windows.
  9. Haga doble clic en el botón. Visual Studio .NET crea automáticamente un controlador de eventos Click . Agregue el código siguiente al controlador de evento Click :
    Dim objNW As New NWClassLib.Class1()
            DataGrid1.DataSource = objNW.GetProducts.Tables(0)
    					

Lista de código completa

Ejemplo de herencia no Class1.cs

using System;
using System.Data;
using System.Data.SqlClient;

namespace NWClassLib
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1
    {
        public static DataSet GetProducts()
        {
            DataSet ds = new DataSet();
            SqlDataAdapter sqlDS = new SqlDataAdapter(
                "select * from products", new SqlConnection(
                "server=(local);database=northwind;Integrated Security=SSPI"));
            sqlDS.Fill(ds);
            return ds;
        } 
    }
}
				

Ejemplo de herencia de Class1.cs

using System;
using System.Data;
using System.Data.SqlClient;

namespace NWClassLib
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1 : System.Windows.Forms.Form
    {
        public static DataSet GetProducts()
        {
            DataSet ds = new DataSet();
            SqlDataAdapter sqlDS = new SqlDataAdapter(
                "select * from products", new SqlConnection(
                "(local);database=northwind;uid=sa"));
            sqlDS.Fill(ds);
            return ds;
        }
    }
}
				

System.Windows.Forms.Form heredar de Form1.vb

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'The Windows Form Designer requires this call.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call.

    End Sub

    'Form overrides Dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'The Windows Form Designer requires this code.
    Private components As System.ComponentModel.IContainer

    'The Windows Form Designer requires this procedure.
    'You can use the Windows Form Designer to modify it. 
    'However, do not use the Code editor to modify it.
    Friend WithEvents Button1 As System.Windows.Forms.Button
    Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Button1 = New System.Windows.Forms.Button()
        Me.DataGrid1 = New System.Windows.Forms.DataGrid()
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(24, 16)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(96, 23)
        Me.Button1.TabIndex = 0
        Me.Button1.Text = "Show Products"
        '
        'DataGrid1
        '
        Me.DataGrid1.DataMember = ""
        Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
        Me.DataGrid1.Location = New System.Drawing.Point(24, 48)
        Me.DataGrid1.Name = "DataGrid1"
        Me.DataGrid1.Size = New System.Drawing.Size(256, 200)
        Me.DataGrid1.TabIndex = 1
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.DataGrid1, Me.Button1})
        Me.Name = "Form1"
        Me.Text = "Form1"
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        Dim objNW As New NWClassLib.Class1()
        DataGrid1.DataSource = objNW.GetProducts.Tables(0)
    End Sub
End Class
				
Nota Debe cambiar el código en Visual Basic 2005. De forma predeterminada, Visual Basic crea dos archivos para el proyecto cuando se crea un proyecto de formularios Windows Forms. Si el formulario se denomina Form1, los dos archivos que representan el formulario se denominan Form1.vb y Form1.Designer.vb. Escribir el código en el archivo Form1.vb. El Diseñador de Windows Forms escribe el código en el archivo Form1.Designer.vb. El Diseñador de Windows Forms se utiliza la palabra clave partial para dividir la implementación de Form1 en dos archivos independientes. Este comportamiento evita que el código generado por diseñador se mezcle suyo con su código.

Para obtener más información acerca de las nuevas mejoras del lenguaje Visual Basic 2005, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
Para obtener más información acerca de las clases parciales y el Diseñador de Windows Forms, visite el siguiente sitio Web de MSDN:
http://msdn2.microsoft.com/en-us/library/ms171843.aspx

WebForm1.vb heredar NWClassLib.Class1

Public Class Form1
    Inherits NWClassLib.Class1

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'The Windows Form Designer requires this call.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call.

    End Sub

    'Form overrides Dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'The Windows Form Designer requires this code.
    Private components As System.ComponentModel.IContainer

    'The Windows Form Designer requires this procedure.
    'You can use the Windows Form Designer to modify it. 
    'However, do not use the Code editor to modify it.
    Friend WithEvents Button1 As System.Windows.Forms.Button
    Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Button1 = New System.Windows.Forms.Button()
        Me.DataGrid1 = New System.Windows.Forms.DataGrid()
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(24, 16)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(96, 23)
        Me.Button1.TabIndex = 0
        Me.Button1.Text = "Show Products"
        '
        'DataGrid1
        '
        Me.DataGrid1.DataMember = ""
        Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
        Me.DataGrid1.Location = New System.Drawing.Point(24, 48)
        Me.DataGrid1.Name = "DataGrid1"
        Me.DataGrid1.Size = New System.Drawing.Size(256, 200)
        Me.DataGrid1.TabIndex = 1
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.DataGrid1, Me.Button1})
        Me.Name = "Form1"
        Me.Text = "Form1"
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        'Dim objNW As New NWClassLib.Class1()
        DataGrid1.DataSource = GetProducts.Tables(0)
    End Sub
End Class
				

Comprobar que funciona

  1. Presione la tecla F5 para ejecutar la aplicación en modo de depuración.
  2. Cuando aparezca el formulario, haga clic en Mostrar productos . El control DataGrid muestra todos los productos de la tabla de productos de Northwind.
  3. Presione la combinación de teclas MAYÚS + F5 para detener la depuración y volver a Visual Studio.

Pasos para ilustrar la herencia multilingüe

Para ilustrar la herencia multilenguaje, debe modificar el ejemplo ligeramente. En lugar de crear una instancia de la biblioteca de clases la aplicación de componente, herede de él.

La clase Form1 actualmente hereda de la clase de System.Windows.Forms.Form . Porque Microsoft .NET no admite herencia múltiple, debe mover la herencia de clase Windows.Forms.Form a la clase NWClassLib.Class1 para heredar el componente de biblioteca de clases.

Nota : IT no es n-tier arquitectura conveniente heredar una clase de interfaz de usuario en un componente de nivel de datos. Sin embargo, puede modificar el ejemplo de manera muestran fácilmente otro aspecto de administración de la solución multilenguaje.
  1. Agregar una referencia al espacio de nombres System.Windows.Forms.Form en la biblioteca de clases antes de modificar Visual C# código.
  2. En la ventana Explorador de soluciones, bajo NWClassLib , haga clic con el botón secundario en referencias y, a continuación, haga clic en Agregar referencia .
  3. En la ficha .NET , haga doble clic en System.Windows.Forms.dll . Observe que System.Windows.Forms.dll aparece en el cuadro de lista de Componentes seleccionados .
  4. Haga clic en Aceptar . Observe que System.Windows.Form aparece bajo referencias en el componente de biblioteca de clases.
  5. Modifique la declaración de Class1 para heredar la clase Form :
    public class Class1 : System.Windows.Forms.Form
    					
  6. La clase de Visual Basic .NET o Visual Basic 2005 Form1 ahora está preparada para heredar de Class1 . Dado que Class1 hereda la clase System.Windows.Forms.Form , la clase MultiLangHowTo.Form1 también heredar System.Windows.Forms.Form a través de su herencia de Class1 .

    En la ventana del Editor, haga clic en Form1.vb . En la declaración de clase, reemplazar System.Windows.Forms.Form NWClassLib.Class1 . El código actualizado debe aparecer como sigue:
    Inherits NWClassLib.Class1
    					
  7. Ponga la primera línea en el controlador de eventos Click comentario siguiente:
    'Dim objNW As New NWClassLib.Class1()
    						
    Nota : como alternativa, puede colocar el cursor en la línea y, a continuación, hacer clic en comentario las líneas seleccionadas en la barra de herramientas para comentar una línea de código.
  8. Modifique la segunda línea como sigue:
    DataGrid1.DataSource = GetProducts.Tables(0)
    					
  9. Repita los pasos en la sección de Verify That It Works.

Solución de problemas

  • Cuando trabaja con dos idiomas, es fácil confundir la sintaxis. Sintaxis de Visual C# no permite un amplio margen de error. Además, los mensajes de error de Visual C# .NET no son siempre como el símbolo del sistema o tan intuitivo como mensajes de error de Visual Basic.NET. Para solucionar estos problemas, consulte la sección "Equivalentes del lenguaje" del Kit de desarrollo de software (SDK) de Microsoft .NET Framework:
    Equivalentes del lenguaje
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Si desea utilizar la herencia de implementación, estudiar orientado a objetos principios de diseño y considerar la arquitectura de aplicación de antemano. Un error habitual es poner código en una aplicación principal que se debe heredar de una biblioteca de clases. En este escenario, no puede heredar la aplicación principal en una biblioteca de clases debido a las dependencias circulares de. Por ejemplo, intente agregar una referencia al proyecto MultiLangHowTo en el proyecto NWClassLib. Recibirá el siguiente mensaje de error:
    No se pudo agregar una referencia a 'MultiLangHowTo'. Agregar este proyecto como una referencia provocaría una dependencia circular.

Referencias

Para obtener más información, consulte los sitios Web de Microsoft siguientes:
Instintos básicos: Utilizando la herencia en .NET, parte 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Instintos básicos: Utilizando la herencia en .NET, parte 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

Propiedades

Id. de artículo: 315838 - Última revisión: lunes, 24 de febrero de 2014 - Versión: 4.8
La información de este artículo se refiere a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315838 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 315838

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com