Como gerenciar soluções multilíngües do Windows Forms no Visual Studio .NET ou no Visual Studio 2005

Traduções deste artigo Traduções deste artigo
ID do artigo: 315838 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo demonstra como criar um aplicativo pequeno, multilíngüe do Windows. O aplicativo principal é criado no Visual Basic .NET ou no Visual Basic 2005. Este aplicativo Visual Basic usa uma biblioteca de classes translation from VPE for Csharp Visual componente para ilustrar referências multilíngües e herança de implementação.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs que você precisa:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional ou Windows XP Server com o Microsoft .NET Framework instalado
  • Microsoft Data Engine (MSDE) ou Microsoft SQL Server 7.0 ou posterior com o banco de dados Northwind
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • Herança de implementação
  • Windows Forms
  • Microsoft ADO.NET

Criar um aplicativo Windows multilíngüe

Essas etapas demonstram como criar um aplicativo pequeno, multilíngüe do Windows. Quando você clica em um botão, você pode exibir todos os produtos do banco de dados Northwind em um controle DataGrid .
  1. Crie um projeto Visual Basic Windows Application da seguinte maneira:
    1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 e, em seguida, clique em New Project .
    2. Em Project Types , clique em Projetos do Visual Basic . Em modelos , clique em Windows Application . Renomear projeto MultiLangHowTo e, em seguida, clique em OK .

      Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
  2. Verifique se a janela do Solution Explorer está visível. Se não estiver, clique em Solution Explorer , no menu Exibir .
  3. Agora você tem o shell de um aplicativo Visual Basic .NET ou Visual Basic 2005 Windows Forms em uma solução chamado MultiLangHowTo. Para fazer uma solução de vários idiomas, você deve adicionar uma biblioteca de classes translation from VPE for Csharp Visual.

    Na janela Solution Explorer, clique com o botão direito do mouse MultiLangHowTo , aponte para Add e, em seguida, clique em New Project . Em Project Types , clique em projetos translation from VPE for Csharp Visual . Em modelos , clique em Class Library . Renomear a biblioteca de classe NWClassLib . Clique em OK para adicionar esta biblioteca de classes à solução.

    Observação No Visual Studio 2005, clique em translation from VPE for Csharp Visual em Tipos de projeto .
  4. Class1.cs aparece na janela Editor. Adicione as seguintes declarações de namespace na parte superior desta janela. Essas declarações permitem que você acessar várias classes para que você pode criar e preencher um objeto DataSet .
    using System.Data;
    using System.Data.SqlClient;
    					
  5. Substitua o método Class1 com o código a seguir, que cria e preenche um DataSet com todos os dados da tabela Produtos 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;
    } 
    						
    Observação : O sistema de desenvolvimento pode exigir uma seqüência de conexão SQL diferente. Se ocorrerem problemas, consulte o administrador do sistema.
  6. Agora você pode criar o Visual Basic Windows Forms aplicativo consumirá este componente. Form1.vb já deve estar aberto no modo Design. Caso contrário, clique duas vezes em Form1.vb na janela Solution Explorer.
  7. Adicione um controle Button e um controle DataGrid para o formulário da seguinte forma:
    1. No menu Exibir , clique em caixa de ferramentas para abrir a caixa de ferramentas. Como alternativa, você pode pressionar CTRL + ALT + X combinação para abrir a caixa de ferramentas de teclas.
    2. Na caixa de ferramentas, clique em Formulários Windows .
    3. Adicione um controle Button ao formulário.
    4. Pressione a tecla F4 para acessar a página de propriedades para o controle Button . Altere a propriedade Text para Mostrar produtos .
    5. Adicione um controle DataGrid ao formulário.
  8. Adicione uma referência projeto para o componente NWClassLib da seguinte maneira:
    1. Na janela Solution Explorer, em MultiLangHowTo , clique com o botão direito do mouse em References e, em seguida, clique em Add Reference .
    2. Na guia projetos , clique duas vezes NWClassLib . Observe que NWClassLib aparece na caixa de lista de Componentes selecionados .
    3. Clique em OK . Observe que NWClassLib é exibido em referências para o aplicativo do Windows.
  9. Clique duas vezes no botão. O Visual Studio .NET cria automaticamente um manipulador de eventos Click . Adicione o seguinte código ao manipulador de evento Click :
    Dim objNW As New NWClassLib.Class1()
            DataGrid1.DataSource = objNW.GetProducts.Tables(0)
    					

Concluir a listagem 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;
        } 
    }
}
				

Exemplo de herança 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;
        }
    }
}
				

Form1.vb Inheriting 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 Sub
End Class
				
Observação Você deve alterar o código no Visual Basic 2005. Por padrão, Visual Basic cria dois arquivos para o projeto quando você cria um projeto Windows Forms. Se o formulário é denominado Form1, os dois arquivos que representam o formulário são chamados de Form1.vb e Form1.Designer.vb. Escreva o código no arquivo Form1.vb. O Windows Forms Designer escreve o código no arquivo Form1.Designer.vb. O Windows Forms Designer usa a palavra-chave partial para dividir a implementação de Form1 em dois arquivos separados. Esse comportamento impede que o código gerado pelo designer sendo intercaladas com seu código.

Para obter mais informações sobre os novos aprimoramentos linguagem Visual Basic 2005, visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
Para obter mais informações sobre classes parciais e o Windows Forms Designer, visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/ms171843.aspx

WebForm1.vb Inheriting 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
				

Verificar se ele funciona

  1. Pressione a tecla F5 para executar o aplicativo no modo de depuração.
  2. Quando o formulário é exibido, clique em Mostrar produtos . DataGrid exibe todos os produtos da tabela Produtos Northwind.
  3. Pressione a combinação de teclas SHIFT + F5 para parar a depuração e retornar para o Visual Studio.

Etapas para demonstrar herança multilíngüe

Para ilustrar multilíngüe herança, você deve modificar o exemplo um pouco. Em vez de criar uma instância da biblioteca de classe de componente, o aplicativo herda dela.

A classe Form1 no momento herda da classe System.Windows.Forms.Form . Porque Microsoft .NET não dá suporte herança múltipla, você deverá mover a herança de classe Windows.Forms.Form à classe NWClassLib.Class1 para herdar o componente de biblioteca de classes.

Observação : ele não é boa n camadas prática arquitetura para herdar uma classe de interface de usuário em um componente camada de dados. No entanto, você pode modificar o exemplo de como a seguir para demonstrar facilmente outro aspecto do gerenciamento de solução de vários idiomas.
  1. Adicione uma referência ao namespace System.Windows.Forms.Form na biblioteca de classes antes de modificar translation from VPE for Csharp Visual código.
  2. Na janela Solution Explorer, em NWClassLib , clique com o botão direito do mouse em References e, em seguida, clique em Add Reference .
  3. Na guia .NET , clique duas vezes em System.Windows.Forms.dll . Observe que System.Windows.Forms.dll aparece na caixa de lista de Componentes selecionados .
  4. Clique em OK . Observe que System.Windows.Form será exibido em referências em seu componente de biblioteca de classes.
  5. Modifique a declaração Class1 para 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 agora está pronta para herdar Class1 . Como Class1 herda a classe System.Windows.Forms.Form , a classe MultiLangHowTo.Form1 também herdarão System.Windows.Forms.Form por meio de sua herança de Class1 .

    Na janela do Editor, clique em Form1.vb . Sob a declaração de classe, substitua System.Windows.Forms.Form NWClassLib.Class1 . O código atualizado deve aparecer da seguinte maneira:
    Inherits NWClassLib.Class1
    					
  7. Comentar a primeira linha no manipulador de eventos Click da seguinte maneira:
    'Dim objNW As New NWClassLib.Class1()
    						
    Observação : como alternativa, você pode colocar o cursor na linha e clique em comentário sem as linhas selecionadas no 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 as etapas na seção Verify That It Works.

Solução de problemas

  • Quando você trabalha com dois idiomas, é fácil confunda sintaxe. Sintaxe de translation from VPE for Csharp Visual não permite uma ampla margem de erro. Além disso, mensagens de erro Visual translation from VPE for Csharp .NET nem sempre são como prompt ou tão intuitiva quanto mensagens de erro do Visual Basic. NET. Para solucionar esses problemas, consulte a seção "Equivalentes de idioma" do Microsoft .NET Framework Software Development Kit (SDK):
    Equivalentes do idioma
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Se você desejar usar herança de implementação, estudar orientada a objeto princípios de design e considere arquitetura do aplicativo antecipadamente. Um erro comum é colocar código em um aplicativo principal que você precisa herdar em uma biblioteca de classe. Nesse cenário, você não pode herdar o aplicativo principal em uma biblioteca de classes devido a dependências circulares. Por exemplo, tente adicionar uma referência ao projeto MultiLangHowTo no projeto NWClassLib. Você receber a seguinte mensagem de erro:
    Uma referência a 'MultiLangHowTo' não pôde ser adicionada. Adicionar este projeto como uma referência causaria uma dependência circular.

Referências

Para obter mais informações, consulte os seguintes sites da Microsoft:
Instintos básicos: Usando herança no. NET, parte 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Instintos básicos: Usando herança no. NET, parte 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

Propriedades

ID do artigo: 315838 - Última revisão: segunda-feira, 24 de fevereiro de 2014 - Revisão: 4.8
A informação contida neste artigo aplica-se 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
Palavras-chave: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315838 KbMtpt
Tradução automática
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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 315838

Submeter comentários

 

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