Как управлять многоязычных решений Windows Forms в Visual Studio .NET или Visual Studio 2005

Переводы статьи Переводы статьи
Код статьи: 315838 - Vizualiza?i produsele pentru care se aplic? acest articol.
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье показано, как создать небольшой, многоязыковые приложения Windows. Основное приложение создается в Visual Basic .NET или Visual Basic 2005. Это приложение Visual Basic использует Visual C# Class Library компонент для демонстрации многоязыковой ссылки и наследование реализации.

Требования

В приведенном ниже списке перечислены требования к оборудованию, сети, программному обеспечению и пакетам обновления.:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional или Windows XP Server с установленным Microsoft .NET Framework
  • Microsoft Data Engine (MSDE) или Microsoft SQL Server 7.0 или более поздней версии в базе данных «Борей»
При написании статьи предполагалось, что пользователь обладает достаточными знаниями в указанных ниже областях.:
  • Наследование реализации
  • Windows Forms
  • Microsoft ADO.NET

Создание приложения Windows поддержка

Следующие шаги демонстрируют, как создать небольшой, многоязыковые приложения Windows. При нажатии кнопки, можно просмотреть все продукты из базы данных "Борей" вDataGridУправление:.
  1. Создайте проект приложения Windows Visual Basic следующим образом:
    1. Запустите Microsoft Visual Studio .NET или Microsoft Visual Studio 2005 и нажмите кнопкуСоздание проекта.
    2. Из спискаТипы проектовзатем –Проекты Visual Basic. Из спискаШаблоны:затем –Приложения Windows. Переименовать проектMultiLangHowToи выберите командуOk..

      Примечание.В Visual Studio 2005 щелкнитеVisual BasicИз спискаТипы проектов.
  2. Убедитесь, что отображается окно обозревателя решений. Если нет, нажмите кнопкуВ обозревателе решенийв менюПредставление:меню.
  3. Теперь имеется оболочка в приложении Visual Basic .NET или Visual Basic 2005 Windows Forms, в пределах решения с именем MultiLangHowTo. Чтобы сделать многоязычных решений, необходимо добавить Visual библиотеки классов C#.

    В окне обозревателя решений щелкните правой кнопкой мышиMultiLangHowTo, выберите пунктДобавьте сервери выберите командуСоздание проекта. Из спискаТипы проектовзатем –Проекты Visual C#. Из спискаШаблоны:затем –Библиотека классов. Переименование библиотеки классовNWClassLib. затем –Ok.для добавления этой библиотеки классов в решение.

    Примечание.В Visual Studio 2005 щелкнитеВ Visual C#Из спискаТипы проектов.
  4. Класс Class1.cs появится в окне редактора. Добавьте следующие объявления пространства имен в верхней части окна. Эти объявления позволяют получить доступ к различным классам, таким образом, чтобы можно было создать и заполнитьНабор данныхОбъект.
    using System.Data;
    using System.Data.SqlClient;
    					
  5. В приведенном примере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;
    } 
    						
    Примечание.: Разработки системы могут потребоваться разные строки подключения SQL. Если возникают проблемы, обратитесь к системному администратору.
  6. Теперь можно построить Windows Forms Visual Basic приложение, которое будет использовать этот компонент. Form1.vb уже должен быть открыт в режиме конструктора. Если нет, дважды щелкните значокForm1.vbв окне обозревателя решений.
  7. ДобавитьКнопкаэлемент управления иDataGridуправления в форму следующим образом:
    1. в менюПредставление:выберите пунктПанель инструментовЧтобы открыть панель инструментов. Кроме того, можно нажать сочетание клавиш CTRL + ALT + X ключа сочетание, чтобы открыть панель инструментов.
    2. На панели элементов нажмите кнопкуWindows Forms.
    3. ДобавитьКнопкаэлемента управления формы.
    4. Нажмите клавишу F4, чтобы открыть страницу свойств дляКнопкаУправление:. ИзменениеTextСвойствоПоказать товары.
    5. ДобавитьDataGridэлемента управления формы.
  8. Добавьте ссылку на компонент NWClassLib следующим образом:
    1. В окне обозревателя решений в областиMultiLangHowTo, щелкните правой кнопкой мышиСсылкии выберите командуДобавление ссылки.
    2. в менюПроектыДважды щелкнитеNWClassLib. Обратите внимание, чтоNWClassLibпоявится вВыбранные компоненты.List Box.
    3. затем –Ok.. Обратите внимание, чтоNWClassLibбудет отображена в разделеСсылкидля приложений Windows.
  9. Дважды щелкните кнопку. В Visual Studio .NET автоматически создаетзатем –обработчик событий. Добавьте следующий код взатем –обработчик событий:
    Dim objNW As New NWClassLib.Class1()
            DataGrid1.DataSource = objNW.GetProducts.Tables(0)
    					

Полный листинг кода

Пример 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;
        } 
    }
}
				

Пример наследования 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 наследование 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
				
Примечание.Необходимо изменить код в Visual Basic 2005. По умолчанию при создании проекта Windows Forms Visual Basic создает два файла для проекта. Если форма называется Form1, двух файлов, которые представляют собой формы с именем Form1.vb и Form1.Designer.vb. Напишите код в файл Form1.vb. В конструкторе Windows Forms записывает код в файле Form1.Designer.vb. В конструкторе Windows Forms использует ключевое слово partial разделить на два отдельных файла реализации класса Form1. Это предотвращает коду, сгенерированному конструктором с перемежаются текстового блока кода.

Для получения дополнительных сведений о новых улучшений языка Visual Basic 2005 посетите следующий веб-узел Microsoft Developer Network (MSDN):
.aspx HTTP://msdn2.Microsoft.com/en-us/library/ms379584 (vs.80)
Дополнительные сведения о разделяемых классах и в конструкторе Windows Forms посетите веб-узлу MSDN:
http://msdn2.Microsoft.com/en-us/library/ms171843.aspx

NWClassLib.Class1 наследование WebForm1.vb

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
				

Убедитесь, что действия

  1. Нажмите клавишу F5 для запуска приложения в режиме отладки.
  2. Когда появится форма, нажмите кнопкуПоказать товары. надписьюDataGridОтображение всех продуктов в таблице products "Борей".
  3. Нажмите сочетание клавиш SHIFT + F5, чтобы остановить отладку и вернуться в Visual Studio.

Действия для демонстрации Поддержка наследования

Чтобы проиллюстрировать многоязыковой поддержки наследования, необходимо изменить образец немного. Вместо создания экземпляра класса библиотеки компонент, приложение наследует от него.

надписьюФормы Form1в настоящее время класс наследует отSystem.Windows.Forms.FormКласс:. Поскольку Microsoft .NET не поддерживает множественное наследование, необходимо переместитьWindows.Forms.Formнаследование классовNWClassLib.Class1класс, наследуемый компонент библиотеки классов.

Примечание.: Рекомендуется не n уровневые архитектуры для наследования класса интерфейса пользователя в компоненте уровня данных. Тем не менее можно изменить пример следующим образом, чтобы легко продемонстрировать другим аспектом управления многоязыковых решений.
  1. Добавьте ссылку наSystem.Windows.Forms.Formпространство имен в библиотеке классов, перед внесением изменений в Visual C# кода.
  2. В окне обозревателя решений в областиNWClassLib, щелкните правой кнопкой мышиСсылкии выберите командуДобавление ссылки.
  3. в меню.netвкладки, дважды щелкните значокSystem.windows.forms.dll. Обратите внимание, чтоSystem.windows.forms.dllпоявится вВыбранные компоненты.List Box.
  4. затем –Ok.. Обратите внимание, чтоSystem.Windows.Formбудет отображена в разделеСсылкив компоненте библиотеки классов.
  5. ИзменитьClass1объявления для наследованияФорма:Класс::
    public class Class1 : System.Windows.Forms.Form
    					
  6. В Visual Basic .NET или Visual Basic 2005Формы Form1Класс готов для наследованияClass1. Так какClass1наследуетSystem.Windows.Forms.Formкласс,MultiLangHowTo.Form1будут также наследовать классSystem.Windows.Forms.Formпо его наследованияClass1.

    В окне редактора щелкнитеForm1.vb. В разделе объявлений класса заменитеSystem.Windows.Forms.Formэтим кодом:NWClassLib.Class1. Обновленный код должен выглядеть следующим образом:
    Inherits NWClassLib.Class1
    					
  7. Комментарий из первой строкизатем –обработчик событий, как показано ниже:
    'Dim objNW As New NWClassLib.Class1()
    						
    Примечание.: В качестве альтернативы поместите курсор в строку и нажмите кнопкуЗакомментировать выбранные строкина панели инструментов, строки кода в комментарий.
  8. Измените вторую строку следующим образом:
    DataGrid1.DataSource = GetProducts.Tables(0)
    					
  9. Повторите этапыУбедитесь, что действияв разделе.

ПОИСК И УСТРАНЕНИЕ НЕПОЛАДОК

  • При работе с двумя языками, очень просто перепутать синтаксиса. Синтаксис Visual C# не допускает ширину поля ошибки. Кроме того сообщения об ошибках Visual C# .NET не всегда такой интуитивно понятной как сообщения об ошибках Visual Basic .NET или строке. Чтобы устранить эти трудности, обратитесь к разделу «Эквиваленты языка» из Microsoft .NET Framework программного обеспечения Development Kit (SDK):
    Языковые эквиваленты
    .aspx HTTP://msdn2.Microsoft.com/en-us/library/czz35az4 (vs.71)
  • Если необходимо использовать наследование реализации, изучить принципы объектно ориентированного проектирования и заранее рассмотрим архитектуру приложения. Распространенные ошибки — это поместить код в главное приложение, необходимо наследовать в библиотеке классов. В этом случае не может наследовать основного приложения в библиотеке классов, из-за циклической зависимости. Например попробуйте добавить ссылку на проект MultiLangHowTo NWClassLib проекта. Появляется следующее сообщение об ошибке::
    Не удалось добавить ссылку на "MultiLangHowTo". Добавить как ссылку на этот проект приведет к циклической зависимости.

Ссылки

Для получения дополнительных сведений обратитесь на веб-узлы корпорации Майкрософт:
Основные инстинкты: С помощью наследования в .NET, часть 1
http://MSDN.Microsoft.com/en-US/Magazine/cc135806.aspx

Основные инстинкты: С помощью наследования в .NET, часть 2
http://MSDN.Microsoft.com/en-US/Magazine/cc301744.aspx

Свойства

Код статьи: 315838 - Последний отзыв: 23 февраля 2014 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • 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 kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB315838 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:315838

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