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

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
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
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.

back to the top

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
back to the top

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)					
back to the top

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;        }     }}				
back to the top

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;        }    }}				
back to the top

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 SubEnd 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): Per ulteriori informazioni sulle classi parziali e Progettazione Windows Form, visitare il seguente sito Web MSDN: back to the top

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 SubEnd Class				
back to the top

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.
back to the top

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.
back to the top

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):
  • 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.
back to the top
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
back to the top
multilingue

Proprietà

ID articolo: 315838 - Ultima revisione: 02/24/2014 06:09:35 - Revisione: 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 KbMtit
Feedback