Come gestire soluzioni multilingue di Windows Form in Visual Studio .NET o in Visual Studio 2005

Traduzione articoli Traduzione articoli
Identificativo articolo: 315838 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo Ŕ stato archiviato. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come creare un'applicazione Windows multilingua, piccola. L'applicazione principale viene creato in Visual Basic .NET o in Visual Basic 2005. Questa applicazione di Visual Basic utilizza una libreria di classi C# Visual componente per illustrare i riferimenti multilingue e l'ereditarietÓ dell'implementazione.

Requisiti

Nell'elenco seguente sono indicati hardware, software, infrastruttura di rete e i service pack Ŕ necessario:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional o Microsoft Windows XP Server cui Ŕ installato Microsoft .NET Framework
  • Microsoft Data Engine (MSDE) o Microsoft SQL Server 7.0 o versione successiva con il database Northwind
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • EreditarietÓ dell'implementazione
  • Windows Form
  • Microsoft ADO.NET

Creare un'applicazione Windows multilingue

Questa procedura viene illustrato come creare un'applicazione Windows multilingua piccola. Quando si fa clic su un pulsante, Ŕ possibile visualizzare tutti i prodotti del database Northwind in un controllo DataGrid .
  1. Creare un progetto applicazione Windows Visual Basic come segue:
    1. Avviare Microsoft Visual Studio .NET o Microsoft Visual Studio 2005 e quindi fare clic su Nuovo progetto .
    2. In Tipi progetto fare clic su Progetti di Visual Basic . In modelli , fare clic su Applicazione Windows . Rinominare il progetto MultiLangHowTo e quindi fare clic su OK .

      Nota In Visual Studio 2005, fare clic su Visual Basic in Tipi progetto .
  2. Assicurarsi che sia visibile la finestra Esplora soluzioni. Se non Ŕ attivato, scegliere Esplora soluzioni dal menu Visualizza .
  3. Ora Ŕ la shell di un'applicazione Visual Basic .NET o Visual Basic 2005 Windows Form all'interno di una soluzione denominata MultiLangHowTo. Per rendere una soluzione multilingua, Ŕ necessario aggiungere una libreria di classi C# Visual.

    Nella finestra Esplora soluzioni, fare clic con il pulsante destro del mouse su MultiLangHowTo , scegliere Aggiungi , quindi Nuovo progetto . In Tipi progetto fare clic su Progetti di Visual C# . Fare clic su Libreria di classi in modelli . Rinominare la libreria di classe NWClassLib . Fare clic su OK per aggiungere questa libreria di classi alla soluzione.

    Nota Fare clic in Visual Studio 2005 su Visual C# in Tipi progetto.
  4. Class1.cs viene visualizzata nella finestra Editor. Aggiungere le seguenti dichiarazioni di spazio dei nomi all'inizio di questa finestra. Queste dichiarazioni consentono di accedere diverse classi in modo che Ŕ possibile creare e compilare un oggetto DataSet .
    using System.Data;
    using System.Data.SqlClient;
    					
  5. Sostituire il metodo di Class1 con il codice seguente, che crea e riempie un DataSet con tutti i dati dalla tabella di prodotti di 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 : il sistema di sviluppo potrebbe richiedere una stringa di connessione SQL diversa. Se si verificano problemi, rivolgersi all'amministratore del sistema.
  6. ╚ ora possibile creare Windows Form Visual Basic dell'applicazione che utilizzerÓ questo componente. Form1.vb deve giÓ essere aperto in visualizzazione struttura. In caso contrario, fare doppio clic su Form1.vb nella finestra Esplora soluzioni.
  7. Aggiungere un controllo Button e un controllo DataGrid al form come segue:
    1. Dal menu Visualizza , fare clic su Strumenti per aprire di casella degli strumenti. In alternativa, Ŕ possibile premere CTRL + ALT + X combinazione per aprire la casella degli strumenti.
    2. Nella casella, fare clic su Windows Form .
    3. Aggiungere un controllo Button al form.
    4. Premere il tasto F4 accesso la pagina delle proprietÓ per il controllo Button . Modificare la proprietÓ Text per Mostra i prodotti .
    5. Aggiungere un controllo DataGrid al form.
  8. Aggiungere un riferimento progetto del componente NWClassLib come indicato di seguito:
    1. Nella finestra Esplora, in MultiLangHowTo , fare clic con il pulsante destro del mouse su riferimenti e quindi fare clic su Aggiungi riferimento .
    2. Nella scheda progetti fare NWClassLib doppio. Si noti che NWClassLib viene visualizzata nella casella Componenti selezionati .
    3. Fare clic su OK . Si noti che NWClassLib viene visualizzata nella casella riferimenti per l'applicazione Windows.
  9. Fare doppio clic sul pulsante. Visual Studio .NET crea automaticamente un gestore eventi Click . Aggiungere il codice seguente al gestore dell'evento Click :
    Dim objNW As New NWClassLib.Class1()
            DataGrid1.DataSource = objNW.GetProducts.Tables(0)
    					

Elenco completo del codice

Esempio di ereditarietÓ Non 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;
        } 
    }
}
				

Esempio di ereditarietÓ di 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 ereditÓ 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
				
Nota ╚ necessario modificare il codice in Visual Basic 2005. Per impostazione predefinita, in Visual Basic due file per il progetto viene creata quando si crea un progetto Windows Form. Se il modulo denominato Form1, i due file che rappresentano il form sono denominati Form1.vb e Form1.Designer.vb. ╚ possibile scrivere il codice nel file Form1.vb. Progettazione Windows Form scrive il codice nel file Form1.Designer.vb. Progettazione Windows Form consente di utilizzato la parola chiave partial per dividere l'implementazione di Form1 in due file distinti. Questo comportamento impedisce che il codice generato per la finestra di progettazione venga frammisto con il codice.

Per ulteriori informazioni sui miglioramenti apportati nuovo linguaggio Visual Basic 2005, visitare il seguente sito Web MSDN (informazioni in lingua inglese):
http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
Per ulteriori informazioni sulle classi parziali e Progettazione Windows Form, visitare il seguente sito Web MSDN:
http://msdn2.microsoft.com/en-us/library/ms171843.aspx

WebForm1.vb ereditÓ 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
				

Verifica del funzionamento

  1. Premere il tasto F5 per eseguire l'applicazione in modalitÓ di debug.
  2. Quando viene visualizzato il form, quindi scegliere Visualizza prodotti . DataGrid vengono visualizzati tutti i prodotti dalla tabella di prodotti di Northwind.
  3. Premere la combinazione di tasti MAIUSC+F5 per interrompere il debug e tornare a Visual Studio.

Procedura per dimostrare l'ereditarietÓ multilingua

Per illustrare l'ereditarietÓ multilingua, Ŕ necessario modificare leggermente l'esempio. Invece di creare un'istanza della libreria di classi componente, l'applicazione eredita da essa.

La classe Form1 attualmente eredita dalla classe System.Windows.Forms.Form . PerchÚ Microsoft .NET non supporta l'ereditarietÓ multipla, Ŕ necessario spostare l'ereditarietÓ di classe Windows.Forms.Form alla classe NWClassLib.Class1 per ereditare il componente della libreria di classi.

Nota : non Ŕ buona norma dell'architettura a n livelli per ereditare una classe di interfaccia utente in un componente a livello dati. Tuttavia, Ŕ possibile modificare l'esempio come segue per dimostrare facilmente un altro aspetto della soluzione multilingue gestione.
  1. Aggiungere un riferimento allo spazio dei nomi System.Windows.Forms.Form nella libreria di classi, prima di modificare Visual C# codice.
  2. Nella finestra Esplora, in NWClassLib , fare clic con il pulsante destro del mouse su riferimenti e quindi fare clic su Aggiungi riferimento .
  3. Nella scheda .NET , fare doppio clic su System.Windows.Forms.dll . Si noti che System.Windows.Forms.dll viene visualizzata nella casella Componenti selezionati .
  4. Fare clic su OK . Si noti che System.Windows.Form viene visualizzata nella casella riferimenti nel componente libreria di classi.
  5. Modificare la dichiarazione di Class1 ereditare la classe Form :
    public class Class1 : System.Windows.Forms.Form
    					
  6. La classe di Visual Basic .NET o Visual Basic 2005 Form1 Ŕ pronto ereditare Class1 . PoichÚ Class1 eredita la classe System.Windows.Forms.Form , Ŕ possibile che la classe MultiLangHowTo.Form1 erediteranno inoltre System.Windows.Forms.Form mediante l'ereditarietÓ di Class1 .

    Nella finestra Editor, fare clic su Form1.vb . Sotto la dichiarazione di classe, Ŕ necessario sostituire System.Windows.Forms.Form con NWClassLib.Class1 . Il codice aggiornato deve essere come segue:
    Inherits NWClassLib.Class1
    					
  7. Commento come indicato di seguito la prima riga nel gestore dell'evento Click :
    'Dim objNW As New NWClassLib.Class1()
    						
    Nota : in alternativa, Ŕ possibile posizionare il cursore sulla riga e quindi fare clic su commento le righe selezionate come sulla barra per commento a una riga di codice.
  8. Modificare la seconda riga come segue:
    DataGrid1.DataSource = GetProducts.Tables(0)
    					
  9. Ripetere i passaggi nella sezione Verify That It Works.

Risoluzione dei problemi

  • Quando si lavora con due lingue, Ŕ facile confondere la sintassi. Sintassi di Visual C# non consente un ampio margine di errore. Inoltre, messaggi di errore di Visual C# .NET non sono sempre come richiesta o come intuitivo come messaggi di errore di Visual Basic. NET. Per risolvere questi problemi, vedere la sezione "Equivalenti di linguaggio" di Microsoft .NET Framework Software Development Kit (SDK):
    Equivalenti di linguaggio
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Se si desidera utilizzare l'ereditarietÓ dell'implementazione, studiare orientato a oggetti principi di progettazione e considerare in anticipo architettura dell'applicazione. Un errore comune consiste nell'inserire codice in un'applicazione principale che Ŕ necessario ereditare in una libreria di classe. In questo scenario, Ŕ impossibile ereditare l'applicazione principale in una libreria di classi a causa delle dipendenze circolari tra. Ad esempio, tentare di aggiungere un riferimento al progetto MultiLangHowTo nel progetto NWClassLib. ╚ visualizzato il seguente messaggio di errore:
    Impossibile aggiungere un riferimento a 'MultiLangHowTo'. Aggiunge il progetto come riferimento causerebbe una dipendenza circolare.

Riferimenti

Per ulteriori informazioni, vedere i seguenti siti Web Microsoft (informazioni in lingua inglese):
Esigenze primarie: Utilizzo dell'ereditarietÓ in. NET, parte 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Esigenze primarie: Utilizzo dell'ereditarietÓ in. NET, parte 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

ProprietÓ

Identificativo articolo: 315838 - Ultima modifica: lunedý 24 febbraio 2014 - Revisione: 4.8
Le informazioni in questo articolo si applicano 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
Chiavi:á
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315838 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 315838
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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