Visual Studio .NET에서 또는 Visual Studio 2005의 다국어 Windows Forms 솔루션을 관리하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 315838 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 작은, 다국어 Windows 응용 프로그램을 만드는 방법을 설명합니다. Visual Basic .NET에서 또는 Visual Basic 2005의 주 응용 프로그램이 빌드됩니다. 이 Visual Basic 응용 프로그램에서 사용하는 Visual C# 클래스 라이브러리 구성 요소를 다국어 참조 및 구현 상속을 보여 줍니다.

요구 사항

다음은 권장되는 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩의 목록입니다.
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows XP Professional 또는 Microsoft .NET Framework가 설치된 Microsoft Windows XP 서버
  • Microsoft 데이터 엔진 (MSDE) 또는 Microsoft SQL Server 7.0 이상을 Northwind 데이터베이스
이 문서에서는 다음 항목을 알고 있는 것으로 가정합니다.
  • 구현 상속
  • Windows Forms
  • Microsoft ADO.NET

다국어 Windows 응용 프로그램 만들기

이러한 단계를 작고 다국어 Windows 응용 프로그램을 만드는 방법을 설명합니다. 해당 단추를 클릭할 때 Northwind 데이터베이스의 모든 제품을 DataGrid 컨트롤을 볼 수 있습니다.
  1. 다음과 같이 Visual Basic Windows 응용 프로그램 프로젝트를 만듭니다.
    1. Visual Studio .NET 또는 Microsoft Visual Studio 2005 시작한 새 프로젝트 를 누릅니다.
    2. 프로젝트 형식 에서 Visual Basic 프로젝트 를 클릭하십시오. 템플릿 에서 Windows 응용 프로그램 을 클릭하십시오. 프로젝트 MultiLangHowTo 바꾸고 확인 을 클릭하십시오.

      참고 Visual Studio 2005 프로젝트 형식 에서 Visual Basic 를 클릭하십시오.
  2. 솔루션 탐색기 창에서 볼 수 있는지 확인하십시오. 그렇지 않은 경우 보기 메뉴에서 솔루션 탐색기 를 클릭하십시오.
  3. 이제 MultiLangHowTo 라는 솔루션 내에서 Visual Basic .NET 또는 Visual Basic 2005 Windows Forms 응용 프로그램 셸. 이 다국어 솔루션을 사용하려면 Visual C# 클래스 라이브러리 추가해야 합니다.

    솔루션 탐색기 창에서 MultiLangHowTo 마우스 오른쪽 단추로 클릭하고 추가 가리킨 다음 새 프로젝트 를 클릭하십시오. 프로젝트 형식 에서 Visual C# 프로젝트 를 클릭하십시오. 템플릿 에서 클래스 라이브러리 를 클릭하십시오. 클래스 라이브러리 NWClassLib 이름을 바꿉니다. 클래스 라이브러리 솔루션에 추가하려면 확인 을 클릭하십시오.

    참고 Visual Studio 2005 클릭합니다 C# 프로젝트 형식 에서.
  4. Class1.cs는 편집기 창에 나타납니다. 이 창의 위쪽 다음 네임스페이스 선언을 추가하십시오. 이러한 선언을 사용하면 만드는 DataSet 개체를 채울 수 있도록 다양한 클래스에 액세스할 수 있습니다.
    using System.Data;
    using System.Data.SqlClient;
    					
  5. Class1 메서드를 만들고 있으며 Northwind 제품 테이블의 데이터를 모두 DataSet 채웁니다 다음 코드로 바꿉니다:
    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. Visual Basic Windows Forms 빌드할 수 있습니다 이 구성 요소를 사용하는 응용 프로그램. Form1.vb은 디자인 보기에서 열려 있어야 합니다. 그렇지 않으면 솔루션 탐색기 창에서 Form1.vb 두 번 클릭합니다.
  7. Button 컨트롤과 DataGrid 컨트롤을 폼에 다음과 같이 추가하십시오
    1. 보기 메뉴에서 도구 상자를 열려면 도구 클릭하십시오. Ctrl + Alt + X를 누릅니다 또는 키 조합을 도구 상자를 엽니다.
    2. 도구 상자에서 Windows Forms 를 클릭하십시오.
    3. 폼에 Button 컨트롤을 추가하십시오.
    4. 단추 컨트롤에 대한 속성 페이지에 액세스하려면 F4 키를 누릅니다. 제품 표시 Text 속성을 변경하십시오.
    5. DataGrid 컨트롤을 폼에 추가하십시오.
  8. 다음과 같이 NWClassLib 구성 요소에 대한 프로젝트 참조를 추가하십시오.
    1. 솔루션 탐색기 창에서 MultiLangHowTo 에서 참조 를 마우스 단추로 클릭한 다음 참조 추가 클릭하십시오.
    2. 프로젝트 탭에서 NWClassLib 두 번 클릭하십시오. NWClassLib 선택한 구성 요소 목록 상자에 나타납니다.
    3. 확인 을 클릭하십시오. 그러면 Windows 응용 프로그램에 대한 참조 에서 NWClassLib 나타납니다.
  9. 단추를 두 번 클릭하십시오. Visual Studio .NET Click 이벤트 처리기를 자동으로 만듭니다. Click 이벤트 처리기에 다음 코드를 추가합니다:
    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;
        }
    }
}
				

Form1.vb 상속 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
				
참고 Visual Basic 2005 코드를 변경해야 합니다. 기본적으로 Windows Forms 프로젝트를 만들 때 VBA 프로젝트의 두 파일을 만듭니다. 양식을 Form1이라는, 폼을 나타내는 두 파일은 Form1.vb 및 Form1.Designer.vb이 명명됩니다. Form1.vb 파일의 코드를 작성합니다. Windows Forms 디자이너 코드 Form1.Designer.vb 파일에 씁니다. Windows Forms 디자이너 partial 키워드를 사용하여 별개의 두 파일이 Form1 구현을 나눕니다. 이 문제는 디자이너에서 생성된 코드가 코드에 삽입되어 수 없습니다.

새로운 Visual Basic 2005 언어 향상 기능에 대한 자세한 내용은 다음 MSDN Microsoft 개발자 네트워크 웹 사이트를 참조하십시오.
http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
부분 클래스 및 Windows Forms 디자이너에 대한 자세한 내용은 다음 MSDN 웹 사이트를:
http://msdn2.microsoft.com/en-us/library/ms171843.aspx

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
				

작동 있는지 확인하십시오.

  1. F5 키를 눌러 디버그 모드에서 응용 프로그램을 실행합니다.
  2. 제품 표시 을 폼이 나타납니다. DataGrid Northwind 제품 테이블의 제품의 모든 표시합니다.
  3. 디버깅 중지 로 Visual Studio 돌아가려면 Shift + F5 키 조합을 누릅니다.

다국어 상속을 설명하기 위해 단계

다국어 상속을 설명하기 위해 예제 약간 수정해야 합니다. 클래스 라이브러리 인스턴스를 만드는 대신 구성 파일에서 응용 상속합니다.

Form1 클래스는 현재 System.Windows.Forms.Form 클래스에서 상속합니다. Microsoft .NET 다중 상속을 지원하지 않으므로 NWClassLib.Class1 클래스에 클래스 라이브러리 구성 상속 Windows.Forms.Form 클래스 상속을 이동해야 합니다.

참고 : 것이 n-티어 아키텍처 좋습니다 데이터 계층 구성 요소의 사용자 인터페이스는 클래스를 상속할 수 없습니다. 또 다른 측면은 다국어 솔루션 관리 쉽게 설명하기 위해 다음과 같은 샘플을 수정할 수 있습니다.
  1. Visual C# 수정하기 전에 클래스 라이브러리 System.Windows.Forms.Form 네임스페이스 참조를 추가할 코드.
  2. 솔루션 탐색기 창에서 NWClassLib 에서 참조 를 마우스 단추로 클릭한 다음 참조 추가 클릭하십시오.
  3. .NET 탭에서 System.Windows.Forms.dll 두 번 클릭하십시오. System.Windows.Forms.dll 선택한 구성 요소 목록 상자에 나타납니다.
  4. 확인 을 클릭하십시오. 그러면 클래스 라이브러리 구성 요소에서 참조 에서 System.Windows.Form 나타납니다.
  5. Form 클래스에서 상속하는 Class1 선언을 수정합니다:
    public class Class1 : System.Windows.Forms.Form
    					
  6. Visual Basic .NET 또는 Visual Basic 2005 Form1 클래스에 Class1 상속할 준비가 되었습니다. Class1 System.Windows.Forms.Form 클래스를 상속하는, 때문에 MultiLangHowTo.Form1 클래스는 해당 Class1 상속을 통해 System.Windows.Forms.Form 또한 상속할.

    편집기 창에서 Form1.vb 을 클릭하십시오. 클래스 선언 아래에 System.Windows.Forms.Form을 NWClassLib.Class1 대체하십시오. 업데이트된 코드 같이 나타나야 합니다:
    Inherits NWClassLib.Class1
    					
  7. Click 이벤트 처리기 첫 줄에 다음과 같은 주석으로:
    'Dim objNW As New NWClassLib.Class1()
    						
    참고 : 항목들을, 있습니다 줄에 커서를 놓고 클릭한 있습니다 선택한 줄의 주석 코드 줄을 주석으로 도구 모음에서.
  8. 두 번째 줄은 다음과 같이 수정합니다:
    DataGrid1.DataSource = GetProducts.Tables(0)
    					
  9. Verify That It Works 섹션의 단계를 반복하십시오.

문제 해결

  • 두 언어의 작업할 때 구문을 혼동하기 쉽습니다. Visual C# 구문 오류 넓은 여백을 허용하지 않습니다. 또한 Visual C# .NET 오류 메시지는 없습니다 항상 프롬프트 또는 Visual Basic .NET 오류 메시지로 같은 직관적인입니다. 이러한 어려움을 해결하는 중 해당 Microsoft .NET Framework 소프트웨어 개발 키트 (SDK) "언어 관련 정보" 절을 참조하십시오.
    언어 비교
    http://msdn2.microsoft.com/en-us/library/czz35az4(vs.71).aspx
  • 구현 상속을 사용하여 개체 지향 디자인 원칙을 학습 를 응용 프로그램 아키텍처를 미리 고려해야 합니다. 일반적인 실수는 클래스 라이브러리 상속할 할 주 응용 프로그램에서 코드를 넣는 것입니다. 이 시나리오에서는 순환 종속 관계로 인해 클래스 라이브러리에서 주 응용 프로그램을 상속할 수 없습니다. 예를 들어, NWClassLib 프로젝트의 MultiLangHowTo 프로젝트에 대한 참조를 추가해 보십시오. 다음 오류 메시지가 나타납니다.
    'MultiLangHowTo' 참조를 추가할 수 없습니다. 이 프로젝트를 참조로 추가하면 순환 종속성이 발생할 수 있습니다.

참조

자세한 내용은 다음 Microsoft 웹 사이트를 참고하십시오.
기본 Instincts: 1부 .NET 상속 사용
http://msdn.microsoft.com/en-us/magazine/cc135806.aspx

기본 Instincts: 2부 .NET 상속 사용
http://msdn.microsoft.com/en-us/magazine/cc301744.aspx

속성

기술 자료: 315838 - 마지막 검토: 2014년 2월 24일 월요일 - 수정: 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 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

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