Como gerir multilingues soluções de Windows Forms no Visual Studio .NET ou no Visual Studio 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

315838
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
Este artigo demonstra como criar uma aplicação do Windows multilíngue, pequena. A aplicação principal é criada no Visual Basic .NET ou no Visual Basic 2005. Esta aplicação de Visual Basic utiliza uma biblioteca de classes do C# Visual componente para ilustrar referências multilingues e herança de implementação.

back to the top

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional ou Microsoft Windows XP Server com o Microsoft .NET Framework instalado
  • Microsoft Data Engine (MSDE) ou o Microsoft SQL Server 7.0 ou posterior com a base de dados Adamastor
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • Herança de implementação
  • Formulários do Windows
  • Microsoft ADO.NET
back to the top

Criar uma aplicação do Windows multilíngue

Estes passos demonstram como criar uma aplicação do Windows multilíngue, pequena. Quando clica num botão, é possível visualizar todos os produtos da base de dados Adamastor num controlo DataGrid .
  1. Crie maneira um projecto de aplicação do Windows do Visual Basic:
    1. Iniciar o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 e, em seguida, clique em Novo projecto .
    2. Em Project Types , clique em Projectos do Visual Basic . Em modelos , clique em Aplicação do Windows . Mude o nome do projecto MultiLangHowTo e, em seguida, clique em OK .

      Nota No Visual Studio 2005, clique em Visual Basic em Project Types .
  2. Certifique-se que a janela Solution Explorer está visível. Se não estiver, clique em Solution Explorer , no menu Ver .
  3. Tem agora a shell de uma aplicação do Visual Basic .NET ou Visual Basic 2005 Windows Forms numa solução denominada MultiLangHowTo. Para tornar esta uma solução multilingue, tem de adicionar uma biblioteca de classes do C# Visual.

    Na janela Solution Explorer, clique com o botão direito do rato MultiLangHowTo , aponte para Adicionar e, em seguida, clique em Novo projecto . Em Project Types , clique em Visual C# Projects . Em modelos , clique em Biblioteca de classes . Mudar o nome da classe biblioteca NWClassLib . Clique em OK para adicionar esta biblioteca de classes para a solução.

    Nota No Visual Studio 2005, clique em Visual C# em Project Types .
  4. Class1.cs aparece na janela do Editor. Adicione as seguintes declarações de espaço de nomes na parte superior desta janela. Estas declarações permitem aceder a várias classes para que possa criar e preencher um objecto de DataSet .
    using System.Data;using System.Data.SqlClient;					
  5. Substitua o método Aula1 o seguinte código, que cria e preenche um DataSet com todos os dados da tabela de produtos de base de dados Adamastor:
    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 : O sistema de desenvolvimento poderá necessitar de uma cadeia de ligação SQL diferente. Se ocorrerem problemas, contacte o administrador do sistema.
  6. Pode agora criar Windows Forms do Visual Basic aplicação que irá consumir este componente. Form1.VB já deve estar aberto na vista de estrutura. Caso contrário, faça duplo clique em Form1.VB na janela Solution Explorer.
  7. Adicione um controlo de botão e o controlo DataGrid ao formulário da seguinte forma:
    1. No menu Ver , clique em caixa de ferramentas para abrir a caixa de ferramentas. Em alternativa, pode premir CTRL + ALT + X tecla combinação para abrir a caixa de ferramentas.
    2. Na caixa de ferramentas dos controlos, clique em Windows Forms .
    3. Adicione um controlo de botão ao formulário.
    4. Prima a tecla F4 para aceder à página Propriedades do controlo de botão . Altere a propriedade Text para Mostrar produtos .
    5. Adicione um controlo DataGrid ao formulário.
  8. Adicione uma referência projecto para o componente NWClassLib da seguinte forma:
    1. Na janela Solution Explorer, em MultiLangHowTo , clique com o botão direito do rato em References e, em seguida, clique em Add Reference .
    2. No separador ' projectos ', faça duplo clique NWClassLib . Repare que NWClassLib aparece na caixa de lista de Componentes seleccionados .
    3. Clique em OK . Repare que NWClassLib aparece em referências para a aplicação do Windows.
  9. Faça duplo clique no botão. O Visual Studio .NET cria automaticamente um processador de evento Click . Adicione o seguinte código ao processador de eventos clique :
    Dim objNW As New NWClassLib.Class1()        DataGrid1.DataSource = objNW.GetProducts.Tables(0)					
back to the top

Concluir lista de código

Exemplo de herança não 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;        }     }}				
back to the top

Exemplo de herança 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;        }    }}				
back to the top

Form1.VB herdar System.Windows.Forms.Form

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 SubEnd Class				
Nota Tem de alterar o código do Visual Basic 2005. Por predefinição, o Visual Basic cria dois ficheiros para o projecto quando cria um projecto de Windows Forms. Se o formulário é o nome Form1, os dois ficheiros que representam o formulário são denominados Form1.VB e Form1.Designer.vb. Tem de escrever o código no ficheiro Form1.VB. O Windows Forms Designer escreve o código no ficheiro Form1.Designer.vb. O Windows Forms Designer utiliza a palavra-chave parcial para dividir a implementação do Form1 em dois ficheiros separados. Este comportamento impede que o código gerado pelo estruturador a ser intercalados com o código.

Para obter mais informações sobre novos melhoramentos de idioma do Visual Basic 2005, visite o seguinte Web site da Microsoft Developer Network (MSDN): Para obter mais informações sobre classes parciais e o Windows Forms Designer, visite o seguinte site da Web MSDN: back to the top

WebForm1.vb herdar 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 SubEnd Class				
back to the top

Verificar se funciona

  1. Prima a tecla F5 para executar a aplicação no modo de depuração.
  2. Quando o formulário for apresentado, clique em Mostrar produtos . DataGrid apresenta todos os produtos da tabela de produtos de base de dados Adamastor.
  3. Prima a combinação de teclas SHIFT + F5 para parar a depuração e voltar ao Visual Studio.
back to the top

Passos para demonstrar herança multilingue

Para ilustrar herança multilingue, tem de modificar o exemplo ligeiramente. Em vez de criar uma instância da biblioteca de classe de componente, a aplicação herda da mesma.

A classe Form1 actualmente herda da classe System.Windows.Forms.Form . Porque o Microsoft .NET não suporta herança múltipla, terá de mover a herança de classe Windows.Forms.Form à classe NWClassLib.Class1 para herdar o componente de biblioteca de classes.

Nota : não é boa prática de arquitectura de n camadas para herdar uma classe de interface de utilizador num componente de camada de dados. No entanto, pode modificar o exemplo de como se segue para demonstrar facilmente outro aspecto da gestão de solução multilingue.
  1. Adicione uma referência no espaço de nomes de System.Windows.Forms.Form na biblioteca de classes antes de modificar o Visual C# código.
  2. Na janela Solution Explorer, em NWClassLib , clique com o botão direito do rato em References e, em seguida, clique em Add Reference .
  3. No separador .NET , clique duas vezes em System.Windows.Forms.dll . Repare que System.Windows.Forms.dll aparece na caixa de lista de Componentes seleccionados .
  4. Clique em OK . Repare que System.Windows.Form aparece em References no seu componente de biblioteca de classes.
  5. Modificar a declaração Aula1 herdar da classe de formulário :
    public class Class1 : System.Windows.Forms.Form					
  6. A classe do Visual Basic .NET ou Visual Basic 2005 Form1 está pronto herdar Aula1 . Porque Aula1 herda da classe de System.Windows.Forms.Form , a classe MultiLangHowTo.Form1 também herdam System.Windows.Forms.Form através da respectiva herança de Aula1 .

    Na janela do Editor, clique em Form1.VB . Em declaração da classe, substitua System.Windows.Forms.Form NWClassLib.Class1 . O código actualizado deve ser apresentado da seguinte forma:
    Inherits NWClassLib.Class1					
  7. Comentar a primeira linha de processador de evento Click da seguinte forma:
    'Dim objNW As New NWClassLib.Class1()						
    Nota : em alternativa, pode colocar o cursor na linha e, em seguida, clicar em comentário as linhas seleccionadas na barra de ferramentas para comentar uma linha de código.
  8. Modifique a segunda linha da seguinte forma:
    DataGrid1.DataSource = GetProducts.Tables(0)					
  9. Repita os passos na secção Verify That It Works.
back to the top

Resolução de problemas

  • Quando trabalha com dois idiomas, é fácil confundir a sintaxe. Sintaxe de Visual C# não permite uma grande margem de erro. Para além disso, as mensagens de erro do Visual C# .NET não são sempre como linha de comandos ou como intuitiva como mensagens de erro do Visual Basic. NET. Para resolver estes problemas, consulte a secção "Equivalentes de idioma" do Microsoft .NET Framework Software Development Kit (SDK):
  • Se pretender utilizar a herança de implementação, estudar orientada princípios de design e considere a arquitectura de aplicações antecipadamente. Um erro comum é colocar o código numa aplicação principal que tem de herdar na biblioteca de classes. Neste cenário, não pode herdar a aplicação principal na biblioteca de classes devido a dependências circulares. Por exemplo, tente adicionar uma referência ao projecto MultiLangHowTo no projecto NWClassLib. Receberá a seguinte mensagem de erro:
    Não foi possível adicionar uma referência a 'MultiLangHowTo'. Adicionar este projecto como uma referência provocaria uma dependência circular.
back to the top
Referências
Para mais informações, consulte os seguintes Web sites da Microsoft:
Básicos Instincts: Utilizando herança no. NET, parte 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Básicos Instincts: Utilizando herança no. NET, parte 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx
back to the top
Multi-Language

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 315838 - Última Revisão: 02/24/2014 20:26:13 - Revisão: 4.8

  • 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
  • kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315838 KbMtpt
Esta informação foi útil?