Tutorial: Adaptar formularios Windows Forms
Actualización: noviembre 2007
El sistema de proyectos de Visual Studio proporciona una considerable compatibilidad con la adaptación de aplicaciones para formularios Windows Forms. Hay dos maneras de generar archivos de recursos mediante el entorno de desarrollo de Visual Studio:
Establezca que el sistema de proyectos genere los archivos de recursos para elementos de la interfaz de usuario que se pueden adaptar como texto e imágenes en el formulario. A continuación, los archivos de recursos se incorporan a ensamblados satélite. Éstos se conocen como recursos basados en formularios.
Agregue una plantilla de archivo de recursos y, a continuación, edite la plantilla con el Diseñador XML. Una razón para hacer esto último es hacer adaptables cadenas que aparecen en cuadros de diálogo y mensajes de error. En este caso, deberá escribir código para tener acceso a estos recursos. Éstos se conocen como recursos de proyecto.
En general, debería utilizar recursos basados en formularios para todos los recursos específicos de un formulario en la aplicación de Windows Forms. Debería utilizar recursos de proyecto para todas las imágenes y cadenas de interfaz de usuario no basadas en formularios, como los mensajes de error.
Nota: |
---|
Es importante mantener la coherencia y utilizar o bien recursos basados en formularios o bien recursos de proyecto para la misma propiedad. Muchas propiedades de imágenes, como la propiedad Image en PictureBox, permiten seleccionar una imagen de los recursos de proyecto o importar una nueva imagen como recurso basado en formularios. Si intenta establecer la imagen predeterminada mediante un recurso de proyecto y versiones de la imagen específicas de un idioma mediante recursos basados en formulario, nunca se mostrará la imagen predeterminada. |
Este tema tutorial muestra ambos procesos en un solo proyecto de aplicación para Windows.
También puede convertir un archivo de texto en un archivo de recursos; para más información, vea Recursos en formato de archivos de texto y Generador de archivos de recursos (Resgen.exe).
Para hacer que Visual Studio genere archivos de recursos automáticamente
Cree una nueva Aplicación para Windows denominada "WindowsApplication1". Para obtener información detallada, vea Cómo: Crear un proyecto de aplicación para Windows.
En la ventana Propiedades, establezca la propiedad Localizable del formulario en true.
La propiedad Language ya está establecida en (Default).
Arrastre al formulario un control Button desde la ficha Windows Forms del Cuadro de herramientas y establezca su propiedad Text en Hello World.
Establezca la propiedad Language del formulario en Alemán (Alemania).
Establezca la propiedad Text del botón en Hallo Welt.
Establezca la propiedad Language del formulario en Francés (Francia).
Establezca la propiedad Text del botón en Bonjour Monde. Puede cambiar el tamaño del botón para dejar espacio suficiente para la cadena más larga, si es necesario.
Guarde y genere la solución.
Haga clic en el botón Mostrar todos los archivos en el Explorador de soluciones.
Aparecerán los archivos de recursos bajo Form1.vb o Form1.cs o Form1.jsl. Form1.resx es el archivo de recursos para la referencia cultural predeterminada, que se incorporará al ensamblado principal. Form1.de-DE.resx es el archivo de recursos para alemán tal como se habla en Alemania. Form1.fr-FR.resx es el archivo de recursos para francés tal como se habla en Francia.
Además, verá que los archivos aparecen con el nombre Form1.de.resx y Form1.fr.resx. Visual Studio crea estos archivos automáticamente para solucionar una limitación de Visual SourceSafe relacionada con la adición de archivos nuevos a un proyecto durante una operación Guardar. Los archivos .resx están vacíos y no contienen recursos.
Presione la tecla F5 o elija Iniciar en el menú Depurar.
Verá un cuadro de diálogo con un saludo en inglés, francés o alemán, según cuál sea el idioma de IU del sistema operativo.
Nota: El idioma de la interfaz de usuario utilizado en Windows es una función de la configuración CurrentUICulture. Si su copia de Windows tiene instalado un paquete de interfaz de usuario multilingüe (MUI), puede cambiar el idioma de la interfaz de usuario en el Panel de control. Para obtener más información, visite el sitio de Windows Server 2003, Windows XP & Windows 2000 MUI. Si no tiene ningún MUI instalado, puede cambiar la configuración cultural de la interfaz de usuario mediante programación, como se explica a continuación.
En el procedimiento siguiente se muestra cómo establecer la referencia cultural de la IU de modo que la aplicación muestre los recursos en francés. En una aplicación real, no codificaría la referencia cultural de la IU de este modo. La configuración de la referencia cultural de la IU depende, en su lugar, de una configuración del usuario o de la aplicación.
Para establecer la referencia cultural de IU para ver recursos específicos
En el Editor de código, agregue el código siguiente al principio del módulo, antes de la declaración de Form1:
' Visual Basic Imports System.Globalization Imports System.Threading // C# using System.Globalization; using System.Threading; // Visual J# import System.Globalization.*; import System.Threading.*;
Agregue el código siguiente: En Visual Basic, debería ir en la función New, antes de llamar a la función InitializeComponent. En Visual C# y Visual J#, debería ir en Form1 y también antes de llamar a la función InitializeComponent.
' Visual Basic ' Sets the UI culture to French (France). Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-FR") // C# // Sets the UI culture to French (France). Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR"); // Visual J# // Sets the UI culture to French (France). System.Threading.Thread.get_CurrentThread().set_CurrentUICulture( new CultureInfo("fr-FR"));
Guarde y genere la solución.
Presione la tecla F5 o elija Iniciar en el menú Depurar.
Ahora el formulario se mostrará en francés. Si antes cambió el tamaño del botón para dejar espacio a la cadena en francés, más larga, observe que el tamaño del botón se guardó también en el archivo de recursos en francés.
Para agregar archivos de recursos al proyecto y editarlos de forma manual
En el menú Proyecto, haga clic en Agregar nuevo elemento.
En el cuadro Plantillas, seleccione la plantilla Archivo de recursos de ensamblado. Escriba el nombre de archivo "WinFormStrings.resX" en el cuadro Nombre. El archivo WinFormStrings.resx contendrá los recursos de reserva en inglés. Se obtendrá acceso a estos recursos cada vez que la aplicación no pueda encontrar recursos más adecuados para la referencia cultural de la interfaz de usuario.
El archivo se agregará al proyecto en el Explorador de soluciones y se abrirá automáticamente en la vista Datos del Diseñador XML.
En el panel Tablas de datos, seleccione datos.
En el panel Datos, haga clic en una fila vacía; escriba strMessage en la columna nombre y Hello World en la columna valor.
No es necesario especificar el valor de type o mimetype para una cadena; se utilizan para objetos. El especificador de tipo contiene el tipo de datos del objeto que se está guardando. El especificador de tipo MIME contiene el tipo base (base64) de la información binaria almacenada, si el objeto consta de datos binarios.
En el menú Archivo, haga clic en Guardar WinFormStrings.resx.
Realice los pasos 1 a 5 dos veces más para crear dos archivos de recursos más denominados WinFormStrings.de-DE.resx y WinFormStrings.fr-FR.resx, con los recursos de cadena especificados en la tabla siguiente. El archivo WinFormStrings.de-DE.resx contendrá recursos que son específicos del alemán hablado en Alemania. El archivo WinFormStrings.fr-FR.resx contendrá recursos que son específicos del francés hablado en Francia.
Nombre del archivo de recursos
Nombre
Valor
WinFormStrings.de-DE.resx
strMessage
Hallo Welt
WinFormStrings.fr-FR.resx
strMessage
Bonjour le Monde
Para tener acceso a los recursos que se agregaron manualmente
En el Editor de código, importe el espacio de nombres System.Resources al principio del módulo de código.
' Visual Basic Imports System.Resources // C# using System.Resources; // Visual J# import System.Resources.*;
En la vista Diseño, haga doble clic en el botón para mostrar el código del controlador de eventos Click y agregue el código siguiente. El constructor ResourceManager toma dos argumentos. El primero es el nombre raíz de los recursos, es decir, el nombre del archivo de recursos sin la referencia cultural ni los sufijos .resx. El segundo argumento es el ensamblado principal.
En este tutorial, no se declara ningún espacio de nombres, por lo que el primer argumento del constructor ResourceManager puede aceptar el formulario de ProjectName.ResourceFileRootName. No obstante, en una aplicación del mundo real, debería establecer la propiedad DefaultNamespace. En ese caso, tendrá que declarar el gestor de recursos con el nombre raíz completo del archivo de recursos, incluido el espacio de nombres. Por ejemplo, si el espacio de nombres predeterminado es MyCompany.MyApplication.MyComponent, el primer argumento del constructor ResourceManager podría ser MyCompany.MyApplication.MyComponent.WinFormStrings.
' Visual Basic ' Declare a Resource Manager instance. Dim LocRM As New ResourceManager("WindowsApplication1.WinFormStrings", GetType(Form1).Assembly) ' Assign the string for the "strMessage" key to a message box. MessageBox.Show(LocRM.GetString("strMessage")) // C# // Declare a Resource Manager instance. ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings",typeof(Form1).Assembly); // Assign the string for the "strMessage" key to a message box. MessageBox.Show(LocRM.GetString("strMessage")); // Visual J# // Declare a Resource Manager instance. ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings", System.Type. GetType("WindowsApplication1.Form1").get_Assembly()); // Assign the string for the "strMessage" key to a message box. MessageBox.Show(LocRM.GetString("strMessage"));
Nota: De forma predeterminada, el objeto ResourceManager distingue entre mayúsculas y minúsculas Si desea realizar consultas sin distinción de mayúsculas y minúsculas para que "TXTWELCOME" recupere el mismo recurso que "txtWelcome", puede establecer la propiedad IgnoreCase del gestor de recursos en true. No obstante, por motivos de rendimiento, siempre es preferible especificar las mayúsculas y minúsculas correctas para los nombres de recursos. Las consultas de recursos sin distinción de mayúsculas y minúsculas pueden producir problemas de rendimiento.
Genere y ejecute el formulario. Haga clic en el botón.
En el cuadro de mensaje, se mostrará una cadena adecuada para la configuración de referencia cultural de la interfaz de usuario; o, si no se puede encontrar un recurso para la referencia cultural de la interfaz de usuario, se mostrará una cadena de los recursos de reserva.