如何管理多種程式語言元件方案在 Visual C# 中

文章翻譯 文章翻譯
文章編號: 816175 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您,如何管理使用 Visual C#.NET 或 Visual C# 2005年的多種語言元件方案。

其他相關資訊

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及所需的 Service Pack:
  • 下列作業系統之一:
    • Microsoft Windows 2000 專業版 (或伺服器)
    • Microsoft Windows XP 商用版與.NET Framework 安裝
    • Microsoft Windows Server 2003
  • Microsoft Visual Studio.NET 或 Microsoft Visual Studio 2005。
  • Microsoft SQL Server 7.0 (含) 以後版本與北風資料庫。
本文假設您已熟悉下列主題:
  • 實作繼承
  • Windows Form
  • ADO.NET
Back to the top

管理多種程式語言元件方案

本文將告訴您,如何建立包含下列三個專案的方案:
  • Visual C# Windows 應用程式在其他兩個專案類別中所使用的方法。
  • Visual Basic.NET 或 Visual Basic 2005 程式庫專案,存取 NorthWind 資料庫,並傳回一個資料集。
  • Visual C# 類別庫專案具有方法,它會取得字串物件的 陣列清單 並傳回串連藉由使用 StringBuilder 類別的執行個體的單一字串。
若要建立一個 Visual C# Windows Form 殼層依照下列步驟執行方案中應用程式:
  1. 按一下 [開始]、 指向 [程式集,並指向 [Visual Studio.NET 2002) 的 Microsoft Visual Studio.NETMicrosoft Visual Studio.NET 2003年 (針對 Microsoft Visual Studio.NET 2003) 或 Microsoft Visual Studio 2005 年) 的 Microsoft Visual Studio 2005]。
  2. 按一下 [Microsoft Visual Studio.NETMicrosoft Visual Studio 2005
  3. 按一下 [新增專案],然後再按一下 [Visual C# 專案

    附註在 Visual 的 Studio 2005 按一下 Visual C#
  4. 在 [範本,] 下按一下 [Windows 應用程式]。
  5. 在 [名稱] 欄位輸入 HowToMultiComp,],然後再按一下 [確定]]。
  6. 建立專案時,請確定方案總管] 中為可見。如果看不到 [方案總管] 中,請按 CTRL + ALT + L。

    您現在有解決方案,名為 HowToMultiComp Visual C# Windows Form 應用程式的殼層。
若要建立多語系的元件方案,新增一個 Visual C# 類別庫,然後再新增 [Visual Basic.NET 或 Visual Basic 2005 類別庫。

您必須先新增 Visual Basic 類別庫。若要將 Visual Basic 類別庫請依照下列步驟執行:
  1. 在 [方案總管] 中以滑鼠右鍵按一下 方案 'HowToMultiComp',並指向 [新增,然後按一下 [新增專案
  2. 按一下 [Visual Basic 專案]。

    附註在 [Visual 的 Studio 2005 按一下 [Visual Basic]。
  3. 在 [範本,] 下按一下 [類別庫]。
  4. 在 [名稱] 方塊中輸入 NWClassLib,],然後再按一下 [確定]]。

    Visual Basic.NET 或 Visual Basic 2005 類別庫被加入至方案。

    Class1.vb 現在是在程式碼編輯器中開啟視窗。
  5. 將兩個 匯入 指示詞加入下列命名空間中的類別速記點標記法存取頂端:
    Imports System.Data
    Imports System.Data.SqlClient
  6. 若要建立,並使用從北風產品資料表資料填滿 資料集 加入以下方法 類別 1 (您可能需要調整為您的電腦連接字串):
    Public Shared Function GetProducts() As DataSet
    	Dim ds As New DataSet()
    	Dim sqlDS As New SqlDataAdapter("select * from products", New SqlConnection("server=<network address of instance of SQL Server>;database=northwind;integrated security=sspi"))
    	sqlDS.Fill(ds)
    	return ds
    End Function
    
建立 Visual C# 類別庫。要這麼做,請您執行下列步驟:
  1. 在 [方案總管] 中以滑鼠右鍵按一下 方案 'HowToMultiComp',並指向 [新增,然後按一下 [新增專案
  2. 按一下 [Visual C# 專案

    附註在 Visual 的 Studio 2005 按一下 Visual C#
  3. 在 [範本,] 下按一下 [類別庫]。
  4. 在 [名稱] 方塊中輸入 SBClassLib,],然後再按一下 [確定]]。

    Visual C# 類別庫加入至方案。

    Class1.cs 現在處於開啟 [編輯器] 視窗。
  5. 將下列 using 指示詞加入 Class1.cs 程式碼範例取得速記點標記法的存取權 System.Text 命名空間和 System.Collections 命名空間中類別的頂端:
    using System.Text;
    using System.Collections;
  6. 公用類別類別 1,用它來串連包含在 陣列清單 的單一字串 StringBuilder 類別的執行個體中加入下列程式碼:
    public static String BuildString(ArrayList arlStrings)
    {
    	StringBuilder sb = new StringBuilder();
    	
    	foreach(String s in arlStrings)
    	{
    			sb.Append(s);
    			sb.Append(", ");
    	}
    	return sb.ToString();
    }
您現在可以建立使用此元件的 Visual C# Windows Form 應用程式。若要建立 Visual C# Windows 表單應用程式,請依照下列步驟執行:
  1. 若要將參考加入至兩個類別庫元件,請依照下列步驟執行:
    1. 在 [方案總管] 中以滑鼠右鍵按一下 [下 HowToMultiComp引用項目,然後按一下 [加入參考]。
    2. 專案,請按下] 並按住 CTRL 鍵不放]、 按一下 NWClassLib,再按 [SBClassLib]。
    3. 按一下 [選取的兩個專案的 [選取]。
    4. 這兩個專案時出現在 選定元件] 方塊中,按一下 [確定]

      參考下現在列專案的視窗應用程式。
  2. Form1.cs 已在 [設計] 檢視中開啟。如果在 Form1.cs 尚未開啟,請連按兩下 Form1.cs],在 [方案總管] 中。
  3. 按下 CTRL + ALT + X 以開啟工具箱],然後按一下 [Windows Form]。
  4. 將按鈕拖曳到該表單,然後按下 F4 以存取屬性頁] 按鈕。
  5. 變更 文字 屬性設定為 顯示產品
  6. 新增另一個按鈕,然後變更 文字 屬性,以 建置的 String
  7. DataGrid 控制項拖曳至表單,然後把它放按鈕的下方。調整 DataGrid 控制項的大小,讓它填滿剩餘的區域,在表單上。
  8. 連按兩下 [顯示產品。Visual Studio.NET 自動建立 Click 事件處理常式。
  9. 加入下列程式碼在 Click 事件處理常式:
    dataGrid1.DataSource = NWClassLib.Class1.GetProducts().Tables[0];
    這個程式碼將 DataGrid資料來源 屬性設定為 [已 GetProducts 方法的類別庫所傳回 資料集
  10. 若要建立第二個 Click 事件處理常式,按兩下 建置字串
  11. 下列程式碼會 DataGrid 的第一列中每個儲存格的內容帶到儲存格 7,向上,並再將內容加入 陣列清單陣列清單 會接著傳遞給 SBClassLibrary 方法會傳回字串,顯示 MessageBox 函式中。因為方法稍早使用靜態關鍵字宣告,並不需要,類別的執行個體。

    將下列程式碼加入 Click 事件處理常式:
    ArrayList arl = new ArrayList();
    for(int i = 0; i <= 8; i++)
    	arl.Add(dataGrid1[0, i].ToString());
    MessageBox.Show(SBClassLib.Class1.BuildString(arl));
Back to the top

完成程式碼清單

完成 (Class1.vb) 程式碼範例的程式碼

Imports System.Data
Imports System.Data.SqlClient

Public Class Class1
    Public Shared Function GetProducts() As DataSet
        Dim ds As New DataSet()
        Dim sqlDS As New SqlDataAdapter("select * from products", New SqlConnection("server=<network address of instance of SQL Server>;database=northwind;uid=sa"))
        sqlDS.Fill(ds)
        Return ds
    End Function
End Class
Back to the top

完成 (Class1.cs) 程式碼範例的程式碼

using System;
using System.Text;
using System.Collections;

namespace SBClassLib
{
	public class Class1
	{
		public Class1()
		{
			
		}

		public static String BuildString(ArrayList arlStrings)
		{
			StringBuilder sb = new StringBuilder();

			foreach(String s in arlStrings)
			{
				sb.Append(s);
				sb.Append(", ");
			}
			return sb.ToString();
		}
	}
}
Back to the top

完成 (Form1.cs) 程式碼範例的程式碼

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace HowToMultiComp
{
	
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.Button button1;
		private System.Windows.Forms.Button button2;
		private System.Windows.Forms.DataGrid dataGrid1;
		
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			InitializeComponent();
		}

		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		private void InitializeComponent()
		{
			this.button1 = new System.Windows.Forms.Button();
			this.button2 = new System.Windows.Forms.Button();
			this.dataGrid1 = new System.Windows.Forms.DataGrid();
			((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
			this.SuspendLayout();
			// 
			// button1
			// 
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(104, 23);
			this.button1.TabIndex = 0;
			this.button1.Text = "Show Products";
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// button2
			// 
			this.button2.Location = new System.Drawing.Point(136, 0);
			this.button2.Name = "button2";
			this.button2.Size = new System.Drawing.Size(96, 23);
			this.button2.TabIndex = 1;
			this.button2.Text = "Build String";
			this.button2.Click += new System.EventHandler(this.button2_Click);
			// 
			// dataGrid1
			// 
			this.dataGrid1.DataMember = "";
			this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
			this.dataGrid1.Location = new System.Drawing.Point(0, 24);
			this.dataGrid1.Name = "dataGrid1";
			this.dataGrid1.Size = new System.Drawing.Size(296, 256);
			this.dataGrid1.TabIndex = 2;
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(292, 273);
			this.Controls.AddRange(new System.Windows.Forms.Control[] {
																		  this.dataGrid1,
																		  this.button2,
																		  this.button1});
			this.Name = "Form1";
			this.Text = "Form1";
			((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
			this.ResumeLayout(false);

		}

		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void button1_Click(object sender, System.EventArgs e)
		{
			dataGrid1.DataSource = NWClassLib.Class1.GetProducts().Tables[0];
		}

		private void button2_Click(object sender, System.EventArgs e)
		{
			ArrayList arl = new ArrayList();
			for(int i = 0; i <= 8; i++)
				arl.Add(dataGrid1[0, i].ToString());
			MessageBox.Show(SBClassLib.Class1.BuildString(arl));
		}
	}
}
附註應該在 Visual Studio 2005 中變更程式碼。當您建立 Windows Form 專案時,Visual C# 將一表單加入專案預設。此表單名為 Form1。Form1.cs 和 Form1.designer.cs 稱為代表表單的兩個檔案。您可以撰寫程式碼中 Form1.cs。Sesigner.cs 檔案是其中 Windows Form 設計工具寫入程式碼會實作所有動作您所加入的控制項執行。 如需有關 Windows Form 設計工具在 Visual C# 2005年中的詳細資訊,請造訪下列 Microsoft 網站]:
http://msdn2.microsoft.com/en-us/library/ms173077.aspx
Back to the top

請確認它可以運作

  1. 請按 F5 在偵錯模式中執行應用程式。
  2. 當表單出現時,按一下 取得產品

    DataGrid 顯示從 Northwind products 資料表的所有產品。
  3. 按一下 [建立字串

    此時會出現一個訊息方塊,可透過具有 7 (以零起始) 的索引之儲存格顯示的第一列的儲存格的串連的內容。
  4. 按下 SHIFT + F5 以停止偵錯,並回到 [Visual Studio.NET。
Back to the top

疑難排解

請確定您不要混淆語法當您使用兩種語言。Visual C# 是非常特定,而錯誤訊息不永遠為提示或直覺式,為的錯誤訊息在 Visual Basic.NET 或 Viusal Basic 2005 中。因此,您可能要加入書籤 」 語言對等 「.NET Framework 軟體開發套件,如果要疑難排解這些問題的區段。MS 說明中找到下列的 「 說明 」 主題:
ms:help://MS.VCC/MS.MSDNVS/vsintro7/html/vxgrfLanguageEquivalents.htm
Back to the top

?考

如需詳細資訊請造訪下列 MSDN 網站]:
建立 Mutli 專案方案
http://msdn2.microsoft.com/en-us/library/aa265251(VS.60).aspx
Back to the top

屬性

文章編號: 816175 - 上次校閱: 2007年5月16日 - 版次: 2.5
這篇文章中的資訊適用於:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbmt kbhowtomaster kbinterop kbappdev kbhowto KB816175 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:816175
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