Comment gérer multilingues solutions Windows Forms dans Visual Studio .NET ou dans Visual Studio 2005

Traductions disponibles Traductions disponibles
Numéro d'article: 315838 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment créer une petite application Windows multilingue. L'application principale est générée dans Visual Basic .NET ou Visual Basic 2005. Cette application Visual Basic utilise une bibliothèque de classes Visual c# composant pour illustrer multilingues références et l'héritage d'implémentation.

Configuration requise

La liste suivante présente le matériel, logiciels, infrastructure de réseau et service packs dont vous avez besoin :
  • Microsoft Windows 2000 Professionnel, Microsoft Windows 2000 Server, Microsoft Windows XP Professionnel ou Microsoft Windows XP Server avec Microsoft .NET Framework installée
  • Microsoft Data Engine (MSDE) ou Microsoft SQL Server 7.0 ou version ultérieure avec la base de données Les Comptoirs
Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :
  • Héritage d'implémentation
  • Windows Forms
  • Microsoft ADO.NET

Créez une Application Windows multilingue

Ces étapes montrent comment créer une petite application Windows multilingue. Lorsque vous cliquez sur un bouton, vous pouvez afficher tous les produits de la base de données Northwind dans un contrôle DataGrid .
  1. Créez un projet Application Windows Visual Basic comme suit :
    1. Démarrez Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005 et puis cliquez sur Nouveau projet .
    2. Sous Types de projets , cliquez sur Projets Visual Basic . Sous modèles , cliquez sur Application Windows . Renommez le projet MultiLangHowTo et puis cliquez sur OK .

      Remarque Dans Visual Studio 2005, cliquez sur Visual Basic sous Types de projets .
  2. Assurez-vous que la fenêtre Explorateur de solutions est visible. Si elle n'est pas le cas, cliquez sur Explorateur de solutions dans le menu affichage .
  3. Vous avez maintenant le shell d'une application Visual Basic .NET ou Visual Basic 2005 Windows Forms au sein d'une solution nommée MultiLangHowTo. Pour que ce soit une solution multilingue, vous devez ajouter une bibliothèque de classes Visual c#.

    Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur MultiLangHowTo , pointez sur Ajouter et cliquez sur Nouveau projet . Sous Types de projets , cliquez sur Projets Visual c# . Sous modèles , cliquez sur Bibliothèque de classes . Renommer la bibliothèque de classes NWClassLib . Cliquez sur OK pour ajouter cette bibliothèque de classes à la solution.

    Remarque Dans Visual Studio 2005, cliquez sur Visual c# sous Types de projets .
  4. Class1.cs apparaît dans la fenêtre Éditeur. Ajoutez les déclarations d'espace de noms suivantes au début de cette fenêtre. Ces déclarations permettent d'accéder aux diverses classes afin que vous pouvez créer et remplir un objet DataSet .
    using System.Data;
    using System.Data.SqlClient;
    					
  5. Remplacez la méthode Class1 par le code suivant, qui crée et remplit un DataSet avec toutes les données de la table produits 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;
    } 
    						
    Remarque : votre système de développement peut nécessiter une autre chaîne de connexion SQL. En cas de problèmes, contactez votre administrateur système.
  6. Vous pouvez à présent générer Visual Basic Windows Forms application qui utilisera ce composant. Form1.vb doit déjà être ouvert en mode Création. Dans le cas contraire, double-cliquez sur Form1.vb dans la fenêtre Explorateur de solutions.
  7. Ajoutez un contrôle Button et un contrôle DataGrid au formulaire comme suit :
    1. Dans le menu affichage , cliquez sur boîte à outils pour ouvrir la boîte à outils. Sinon, vous pouvez appuyez sur la CTRL + ALT + X clé combinaison pour ouvrir la boîte à outils.
    2. Dans la boîte à outils, cliquez sur Windows Forms .
    3. Ajoutez un contrôle Button au formulaire.
    4. Appuyez sur la touche F4 pour accéder à la page de propriétés pour le contrôle Button . Modifiez la propriété Text pour Afficher les produits .
    5. Ajoutez un contrôle DataGrid au formulaire.
  8. Ajoutez une référence de projet au composant NWClassLib comme suit :
    1. Dans la fenêtre Explorateur de solutions, sous MultiLangHowTo , cliquez avec le bouton droit sur références , puis cliquez sur Ajouter une référence .
    2. Sur l'onglet projets , double-cliquez sur NWClassLib . Notez que NWClassLib s'affiche dans la zone de liste Composants sélectionnés .
    3. Cliquez sur OK . Notez que NWClassLib apparaît sous références pour l'application Windows.
  9. Double-cliquez sur le bouton. Visual Studio .NET crée automatiquement un gestionnaire d'événements Click . Ajoutez le code suivant au gestionnaire d'événement Click :
    Dim objNW As New NWClassLib.Class1()
            DataGrid1.DataSource = objNW.GetProducts.Tables(0)
    					

Terminer la liste des codes

Exemple d'héritage 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;
        } 
    }
}
				

Exemple d'héritage 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;
        }
    }
}
				

System.Windows.Forms.Form héritage Form1.vb

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
				
Remarque Vous devez modifier le code dans Visual Basic 2005. Par défaut, Visual Basic crée deux fichiers pour le projet lorsque vous créez un projet Windows Forms. Si le formulaire est nommé Form1, les deux fichiers représentent le formulaire sont nommés Form1.vb et Form1.Designer.vb. Vous écrivez le code dans le fichier Form1.vb. Le Concepteur Windows Forms écrit le code dans le fichier Form1.Designer.vb. Le Concepteur Windows Forms utilise le mot clé partial pour diviser l'implémentation de Form1 en deux fichiers distincts. Ce comportement empêche le code généré par le Concepteur de parsemés dans votre code.

Pour plus d'informations sur les nouvelles améliorations du langage Visual Basic 2005, site Web MSDN (Microsoft Developer Network) suivant :
http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
Pour plus d'informations sur le Concepteur Windows Forms et les classes partielles, site suivant Web MSDN :
http://msdn2.microsoft.com/en-us/library/ms171843.aspx

WebForm1.vb héritage 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
				

Vérifier qu'il fonctionne

  1. Appuyez sur la touche F5 pour exécuter l'application en mode débogage.
  2. Lorsque le formulaire s'affiche, cliquez sur Afficher les produits . Le contrôle DataGrid affiche tous les produits de la table produits de Northwind.
  3. Appuyez sur la combinaison de touches MAJ + F5 pour arrêter le débogage et revenir à Visual Studio.

Étapes pour Montrez l'héritage multilingue

Pour illustrer l'héritage multilingue, vous devez modifier l'exemple légèrement. Au lieu de créer une instance de la bibliothèque de classes composant, l'application hérite.

La classe Form1 hérite actuellement de la classe System.Windows.Forms.Form . Étant donné que Microsoft .NET ne prend pas en charge l'héritage multiple, vous devez déplacer l'héritage de classe Windows.Forms.Form à la classe NWClassLib.Class1 pour hériter du composant bibliothèque de classes.

Remarque : il ne convient pas à n niveaux architecture hériter d'une classe d'interface utilisateur dans un composant de couche données. Toutefois, vous pouvez modifier l'exemple comme suit pour montrer facilement un autre aspect de la solution multilingue gestion de.
  1. Ajouter une référence à l'espace de noms System.Windows.Forms.Form dans la bibliothèque de classes avant de modifier le c# code.
  2. Dans la fenêtre Explorateur de solutions, sous NWClassLib , cliquez avec le bouton droit sur références , puis cliquez sur Ajouter une référence .
  3. Sur l'onglet .NET , double-cliquez sur System.Windows.Forms.dll . Notez que System.Windows.Forms.dll s'affiche dans la zone de liste Composants sélectionnés .
  4. Cliquez sur OK . Notez que System.Windows.Form apparaît sous références dans votre composant de bibliothèque de classes.
  5. Modifiez la déclaration Class1 pour hériter de la classe Form :
    public class Class1 : System.Windows.Forms.Form
    					
  6. La classe Visual Basic .NET ou Visual Basic 2005 Form1 est prêt à hériter de Class1 . La mesure où Class1 hérite la classe System.Windows.Forms.Form , la classe MultiLangHowTo.Form1 héritera également System.Windows.Forms.Form son héritage de Class1 .

    Dans la fenêtre de l'éditeur, cliquez sur Form1.vb . Sous la déclaration de classe, remplacez NWClassLib.Class1 System.Windows.Forms.Form . Le code mis à jour doit apparaître comme suit :
    Inherits NWClassLib.Class1
    					
  7. Commentez la première ligne dans le Gestionnaire d'événements Click comme suit :
    'Dim objNW As New NWClassLib.Class1()
    						
    Remarque : également, vous pouvez placer le curseur sur la ligne, puis sur commentaires les lignes sélectionnées dans la barre d'outils pour commentaire d'une ligne de code.
  8. Modifiez la deuxième ligne comme suit :
    DataGrid1.DataSource = GetProducts.Tables(0)
    					
  9. Répétez les étapes dans la section Verify That It Works.

Résolution des problèmes

  • Lorsque vous travaillez avec deux langues, il est facile de confondre syntaxe. Syntaxe Visual c# n'autorise pas une large marge d'erreur. En outre, messages d'erreur Visual c# .NET ne sont toujours pas comme invite de commandes ou aussi intuitive que messages d'erreur Visual Basic .NET. Pour résoudre ces difficultés, reportez-vous à la section «Langage Equivalents» de la Microsoft .NET Framework Kit de développement (SDK) :
    Équivalents de langage
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Si vous souhaitez utiliser l'héritage d'implémentation, étudier et orienté objet principes de conception et architecture d'application à l'avance. Une erreur courante consiste à placer le code dans une application principale que vous souhaitez hériter dans une bibliothèque de classes. Dans ce scénario, vous ne pouvez pas hériter l'application principale dans une bibliothèque de classes en raison des dépendances circulaires. Par exemple, essayez d'ajouter une référence au projet MultiLangHowTo dans le projet NWClassLib. Vous recevez message d'erreur suivantes :
    Impossible d'ajouter une référence à 'MultiLangHowTo'. L'ajout de ce projet en tant que référence entraînerait une dépendance circulaire.

Références

Pour plus d'informations, reportez-vous aux sites Web Microsoft suivant :
Instincts de base : L'aide de l'héritage dans .NET, partie 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Instincts de base : L'aide de l'héritage dans .NET, partie 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

Propriétés

Numéro d'article: 315838 - Dernière mise à jour: lundi 24 février 2014 - Version: 4.8
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Visual C# .NET 2003 Initiation
  • Microsoft Visual C# .NET 2002 Initiation
Mots-clés : 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315838 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 315838
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

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