如何管理多语言组件解决方案在 Visual C# 中

文章翻译 文章翻译
文章编号: 816175 - 查看本文应用于的产品
为这篇文章的一个 Microsoft Visual Basic.net 版本,请参阅 317702

本任务中


展开全部 | 关闭全部

本文内容

概要

本文介绍如何管理使用 Visual C#.net 或 Visual C# 2005年的多语言组件解决方案。

更多信息

要求

下面的列表概述了建议的硬件、 软件、 网络的基础结构和所需的服务包:
  • 下列操作系统之一:
    • Microsoft Windows 2000 专业版 (或服务器)
    • Microsoft 与.net 框架安装的 Windows XP 专业版
    • Windows 2003 Server
  • Microsoft Visual Studio.net 或 Microsoft Visual Studio 2005。
  • Microsoft SQL Server 7.0 版或更高版本与罗斯文数据库。
本文假定您熟悉下列主题:
  • 实现继承
  • Windows 窗体
  • ADO.NET
Back to the top

管理多语言的组件解决方案

本文介绍了如何创建一个包含以下三个项目的解决方案:
  • 在其他两个项目类中使用方法的 Visual C# Windows 应用程序。
  • Visual Basic.net 或 Visual Basic 2005 库项目的可访问 NorthWind 数据库,并返回数据集。
  • 已接受的字符串对象 ArrayList 并返回单个字符串的连接通过使用 StringBuilder 类的实例方法的 Visual C# 类库项目。
若要创建一个 Visual C# Windows 窗体的外壳应用程序在执行以下步骤的解决方案:
  1. 单击 开始,指向 程序,然后单击 Microsoft Visual Studio.net (对于 Visual Studio.net 2002)、 Microsoft 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。

    现在,您 Visual C# Windows 窗体应用程序的外壳命名 HowToMultiComp 解决方案中。
若要进行多语言组件解决方案添加一个 Visual C# 类库,然后添加 Visual Basic.net 或 Visual Basic 2005 类库。

首先,必须将其添加 vba 类库。若要向 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. 创建,并使用罗斯文产品表中数据填充 数据集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;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. Class1.cs 代码示例获取 System.Text 命名空间和 System.Collections 命名空间中对类的简略表示法点表示法访问的顶部添加下面的 using 指令:
    using System.Text;
    using System.Collections;
  6. 公共类的 Class1,连接 ArrayList 中包含的单个字符串将使用 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 窗体应用程序。若要创建 Visual C# Windows 窗体应用程序,请按照下列步骤:
  1. 若要将对类库的两个组件的引用,请按照下列步骤操作:
    1. 在解决方案资源管理器中,用鼠标右键单击 引用HowToMultiComp,下,然后单击 添加引用
    2. 项目,下按下并按住 CTRL 键、 单击 NWClassLib,然后单击 SBClassLib
    3. 单击与选定的两个项目的 选择
    4. 当这两个项目出现在该 选定组件 框中,单击 确定

      项目现在为窗口应用程序列在 $ 参照下。
  2. Form1.cs 是在设计视图中打开。如果在 Form1.cs 尚未打开,双击 Form1.cs 解决方案资源管理器中。
  3. 按 CTRL + ALT + X 若要打开工具箱,然后单击 Windows 窗体
  4. 拖到该的窗体中将一个按钮,然后按 F4 以访问属性页按钮。
  5. 更改为 显示产品Text 属性设置。
  6. 添加另一个的按钮,然后更改 文本 属性,以 生成字符串
  7. 拖到该的窗体上拖动 DataGrid 控件,然后将其放在按钮的下面。调整 DataGrid 控件的大小,使其填充窗体上剩余的区域。
  8. 双击 显示产品。visual Studio.net 自动创建 Click 事件处理程序。
  9. 添加以下代码将 Click 事件处理程序:
    dataGrid1.DataSource = NWClassLib.Class1.GetProducts().Tables[0];
    此代码将 数据网格数据源 属性设置为已由类库的 GetProducts 方法返回在 数据集
  10. 若要进行第二个 Click 事件处理程序双击 生成字符串
  11. 下面的代码将在数据网格中的第一行中的每个单元格的内容带到单元格 7,向上然后将内容添加到 ArrayListArrayList 然后传递到 MessageBox 函数中返回一个字符串,它将出现在 SBClassLibrary 方法。类的实例不必要,因为该方法通过使用 static 关键字声明了更早版本。

    将下面的代码添加到 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 窗体项目时 Visual C# 一个窗体向项目添加默认情况下。此窗体是名为 Form1。表示窗体的两个文件称为 Form1.cs 和 Form1.designer.cs。可以在 Form1.cs 中编写您的代码。在 Windows 窗体设计器写入实现的所有操作的代码通过将控件添加执行的 Sesigner.cs 文件。 在 Visual C# 2005年中的 Windows 窗体的设计器有关的详细信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/ms173077.aspx
Back to the top

验证它工作的

  1. 按 f5 键以在调试模式下运行该应用程序。
  2. 当窗体出现时单击 获取产品

    数据网格 将显示罗斯文产品表中的所有产品。
  3. 单击 生成 String

    会显示一个消息框显示通过其索引为 7 (从零开始) 单元格的串联在第一个行的单元格的内容。
  4. 按 SHIFT + F5 停止调试并返回到 Visual Studio.net。
Back to the top

故障排除

请确保您正在使用两种语言时不要会混淆语法。visual C# 是非常特定,错误消息并不总是为提示或直观在 Visual Basic.net 中或在 Viusal Basic 2005 中错误消息。因此,您可能需要添加书签语言等效的.net 框架软件开发工具包,若要解决这些困难的部分。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 标准版
关键字:?
kbmt kbhowtomaster kbinterop kbappdev kbhowto KB816175 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 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