Zum Verwalten von mehrsprachiger Windows Forms-Lösungen in Visual Studio .NET oder in Visual Studio 2005

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 315838 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

In diesem Artikel veranschaulicht das Erstellen einer kleinen, mehrsprachigen Windows-Anwendung. Die Hauptthread der Anwendung wird in Visual Basic .NET oder Visual Basic 2005 erstellt. Dieses VBA-Anwendung verwendet eine Visual C#-Klassenbibliothek Komponente, um mehrsprachige Verweise und Implementierungsvererbung veranschaulichen.

Voraussetzungen

Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional oder Microsoft Windows XP Server mit Microsoft .NET Framework installiert
  • Microsoft Data Engine (MSDE) oder Microsoft SQL Server 7.0 oder höher mit der Nordwind-Datenbank
In diesem Artikel wird vorausgesetzt, dass Sie über Erfahrungen auf den folgenden Gebieten verfügen:
  • Implementierungsvererbung
  • Windows Forms
  • Microsoft ADO.NET

Erstellen Sie eine MultiLanguage Windows-Anwendung

Diese Schritte veranschaulichen das Erstellen Sie eine kleinen, mehrsprachigen Windows-Anwendung. Wenn Sie eine Schaltfläche klicken, können Sie alle Produkte aus der Datenbank Northwind in einem DataGrid -Steuerelement anzeigen.
  1. Erstellen Sie ein Visual Basic Windows-Anwendungsprojekt wie folgt:
    1. Starten Sie Microsoft Visual Studio .NET oder Microsoft Visual Studio 2005, und klicken Sie auf Neues Projekt .
    2. Klicken Sie unter Projekttypen auf Visual Basic-Projekte . Klicken Sie unter Vorlagen auf Windows-Anwendung . Benennen Sie das Projekt MultiLangHowTo , und klicken Sie dann auf OK .

      Hinweis: Klicken Sie in Visual Studio 2005 unter Projekttypen auf Visual Basic .
  2. Stellen Sie sicher, dass das Fenster Projektmappen-Explorer sichtbar ist. Wenn dies nicht der Fall ist, klicken Sie im Menü Ansicht auf auf Projektmappen-Explorer .
  3. Sie haben jetzt die Shell eine Visual Basic .NET oder Visual Basic 2005 Windows Forms-Anwendung innerhalb einer Projektmappe mit dem Namen MultiLangHowTo. Um dies zu eine mehrsprachige Lösung machen, müssen Sie eine Visual C#-Klassenbibliothek hinzufügen.

    Klicken Sie im Fenster Projektmappen-Explorer mit der rechten Maustaste auf MultiLangHowTo , zeigen Sie auf Hinzufügen und klicken Sie auf Neues Projekt . Klicken Sie unter Projekttypen auf Visual C#-Projekte . Klicken Sie unter Vorlagen auf Klassenbibliothek . Umbenennen der Class Library NWClassLib . Klicken Sie auf OK , um diese Klassenbibliothek in der Projektmappe hinzuzufügen.

    Hinweis: Klicken Sie in Visual Studio 2005 auf Visual c# unter Projekttypen .
  4. Class1.cs wird im Editor-Fenster angezeigt. Fügen Sie die folgenden Namespacedeklarationen am Anfang dieses Fensters. Diese Deklarationen können Sie verschiedene Klassen Zugriff, sodass Sie erstellen und ein DataSet -Objekts füllen.
    using System.Data;
    using System.Data.SqlClient;
    					
  5. Ersetzen Sie die Class1 -Methode durch folgenden Code erstellt und füllt ein DataSet mit allen Daten aus der Tabelle Northwind Products:
    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;
    } 
    						
    Hinweis : das Entwicklungssystem erfordern unterschiedliche SQL-Verbindungszeichenfolge. Wenn Probleme auftreten, wenden Sie sich an Ihren Systemadministrator.
  6. Sie können jetzt Visual Basic Windows Forms erstellen Anwendung, die diese Komponente genutzt wird. Form1.vb sollte bereits in der Entwurfsansicht geöffnet sein. Falls nicht, doppelklicken Sie auf Form1.vb im Fenster Projektmappen-Explorer.
  7. Fügen Sie dem Formular folgendermaßen ein Button -Steuerelement und ein DataGrid -Steuerelement ein:
    1. Klicken Sie im Ansicht auf Toolbox , um die Toolbox zu öffnen. Alternativ können Sie STRG + ALT + X drücken die Tastenkombination zum Öffnen der Toolbox.
    2. Klicken Sie in der Toolbox auf Windows Forms .
    3. Fügen Sie dem Formular ein Button -Steuerelement.
    4. Drücken Sie die F4-TASTE auf die Eigenschaftenseite für das Button -Steuerelement zugreifen. Ändern Sie die Eigenschaft Text auf Produkte anzeigen .
    5. Das Formular ein DataGrid -Steuerelement hinzugefügt.
  8. Fügen Sie einen Projektverweis auf die Komponente NWClassLib folgendermaßen:
    1. Klicken Sie im Projektmappen-Explorer unter MultiLangHowTo klicken Sie mit der rechten Maustaste auf Verweise und klicken Sie dann auf Verweis hinzufügen .
    2. Die Registerkarte Projekte doppelklicken Sie auf NWClassLib auf. Beachten Sie, dass NWClassLib im Listenfeld Ausgewählte Komponenten angezeigt wird.
    3. Klicken Sie auf OK . Beachten Sie, dass NWClassLib für die Windows-Anwendung unter Verweise angezeigt wird.
  9. Doppelklicken Sie auf die Schaltfläche. Visual Studio .NET erstellt automatisch einen Click -Ereignishandler. Fügen Sie den folgenden Code hinzu den Click -Ereignishandler:
    Dim objNW As New NWClassLib.Class1()
            DataGrid1.DataSource = objNW.GetProducts.Tables(0)
    					

Vollständige Codeauflistung

Beispiel für Class1.cs nicht Vererbung

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;
        } 
    }
}
				

Beispiel für Class1.cs Vererbung

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 erben 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
				
Hinweis: Sie müssen den Code in Visual Basic 2005 ändern. Standardmäßig erstellt Visual Basic zwei Dateien für das Projekt, wenn Sie ein Windows Forms-Projekt erstellen. Wenn das Formular Form1 benannt ist, werden die beiden Dateien, die das Formular darstellen Form1.vb und Form1.Designer.vb benannt. Schreiben Sie Code, in der Datei Form1.vb. Windows Forms-Designer schreibt den Code in der Datei Form1.Designer.vb. Windows Forms-Designer verwendet das partielle Schlüsselwort, um die Implementierung von Form1 in zwei separate Dateien aufzuteilen. Dieses Verhalten verhindert, dass den Designer generierten Code mit dem Code eingefügt wird.

Weitere Informationen über die neuen Sprachverbesserungen von Visual Basic 2005 die folgenden Microsoft Developer Network (MSDN)-Website:
http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
Weitere Informationen zu partiellen Klassen und der Windows Forms-Designer die folgenden MSDN-Website:
http://msdn2.microsoft.com/en-us/library/ms171843.aspx

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

Funktionsprüfung

  1. Drücken Sie F5, um die Anwendung im Debugmodus auszuführen.
  2. Wenn das Formular angezeigt wird, klicken Sie auf Artikel anzeigen . Das DataGrid zeigt alle der Produkte aus der Northwind-Produkte-Tabelle.
  3. Drücken Sie die UMSCHALT + F5 Tastenkombination Debugvorgang beenden und zur Visual Studio zurückzukehren.

Schritte zum Erläutern von MultiLanguage Vererbung

Um mehrsprachige Vererbung zu veranschaulichen, müssen Sie das Beispiel etwas ändern. Anstatt eine Instanz der Klassenbibliothek zu erstellen-Komponente, die Anwendung erbt es.

Die Form1 -Klasse erbt derzeit von System.Windows.Forms.Form -Klasse. Da Microsoft .NET Mehrfachvererbung nicht unterstützt, müssen Sie die Klassenvererbung Windows.Forms.Form der NWClassLib.Class1 -Klasse, erben die Klassenbibliothek Komponente verschieben.

Hinweis : Es empfiehlt nicht n-Tier-Architektur, eine Benutzerklasse Schnittstelle in einer Komponente Datenebene erben. Allerdings können Sie das Beispiel wie folgt, um einfach ein weiterer Aspekt der multilanguage-Lösung Verwaltung veranschaulichen ändern.
  1. Fügen Sie in der Klassenbibliothek einen Verweis auf den System.Windows.Forms.Form -Namespace hinzu, vor dem Ändern der Visual C#-Code.
  2. Klicken Sie im Projektmappen-Explorer unter NWClassLib klicken Sie mit der rechten Maustaste auf Verweise und klicken Sie dann auf Verweis hinzufügen .
  3. Doppelklicken Sie auf der Registerkarte .NET auf System.Windows.Forms.dll . Beachten Sie, dass System.Windows.Forms.dll im Listenfeld Ausgewählte Komponenten angezeigt wird.
  4. Klicken Sie auf OK . Beachten Sie, dass System.Windows.Form in der Klassenbibliothek Komponente unter Verweise angezeigt wird.
  5. Ändern Sie die Class1 -Deklaration der Formularklasse erben:
    public class Class1 : System.Windows.Forms.Form
    					
  6. Die Visual Basic .NET oder Visual Basic 2005 Form1 -Klasse kann jetzt Class1 erben. Da Class1 System.Windows.Forms.Form -Klasse erbt, erbt die MultiLangHowTo.Form1 -Klasse System.Windows.Forms.Form auch durch die Vererbung von Class1 .

    Klicken Sie im Editor auf Form1.vb . Ersetzen Sie unter der Klassendeklaration System.Windows.Forms.Form mit NWClassLib.Class1 . Der aktualisierte Code sollte wie folgt angezeigt:
    Inherits NWClassLib.Class1
    					
  7. Kommentieren Sie die erste Zeile im Click -Ereignishandler wie folgt:
    'Dim objNW As New NWClassLib.Class1()
    						
    Hinweis : Alternativ, können Sie platzieren Sie den Cursor auf der Zeile und klicken Sie der Symbolleiste auf eine Codezeile auskommentieren auf Kommentar der ausgewählten Zeilen .
  8. Ändern Sie die zweite Zeile wie folgt:
    DataGrid1.DataSource = GetProducts.Tables(0)
    					
  9. Wiederholen Sie die Schritte im Abschnitt ? Verify That It Works.

Problembehandlung

  • Wenn Sie mit zwei Sprachen arbeiten, ist es leicht verwechselt Syntax. Visual C#-Syntax lässt nicht zu einen breiten Rand Fehler. Darüber hinaus sind Visual c#-Fehlermeldungen nicht immer als Eingabeaufforderung oder so intuitiv als Visual Basic .NET Fehlermeldungen. Um diese Probleme zu beheben, finden Sie in den Abschnitt "Language Equivalents" von Microsoft .NET Framework Software Development Kit (SDK):
    Sprache-Entsprechungen
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • Wenn Sie Implementierungsvererbung verwenden möchten, untersuchen Sie Prinzipien objektorientierten Entwurf und berücksichtigen Sie Architektur der Anwendung im Voraus zu. Ein häufiger Fehler besteht darin, Code in eine zentrale Anwendung einfügen, die Sie in eine Klassenbibliothek erben müssen. In diesem Szenario können Sie die Hauptanwendung in eine Klassenbibliothek nicht wegen Ringabhängigkeiten erben. Versuchen Sie zum Beispiel einen Verweis auf das Projekt MultiLangHowTo in NWClassLib-Projekt hinzufügen. Folgende Fehlermeldung wird angezeigt:
    Ein Verweis auf 'MultiLangHowTo' konnte nicht hinzugefügt werden. Das Hinzufügen dieses Projekts als Verweis würde eine Ringabhängigkeit verursachen.

Informationsquellen

Weitere Informationen finden Sie auf der folgenden Microsoft-Websites:
Basic Instincts: Verwenden von Vererbung in .NET, Teil 1
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

Basic Instincts: Verwenden von Vererbung in .NET, Teil 2
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

Eigenschaften

Artikel-ID: 315838 - Geändert am: Montag, 24. Februar 2014 - Version: 4.8
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbnosurvey kbarchive kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB315838 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 315838
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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