控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

VisualStudio2010在COM互操作中使用索引属性

作者:佚名 出处:IT专家网 2010年04月02日 阅读:

VisualStudio2010在COM互操作中使用索引属性

  索引属性可改善有参数的COM属性在C#编程中的使用方式。索引属性与命名参数和可选参数、一个新类(动态类)和嵌入式类型信息等Visual C# 2010中推出的其它属性一起工作以增强微软Office编程。

  在早期版本的C#中,只要Get方式没有参数和Set方式只有一个参数和唯一的一个值参数,方式就可以作为属性访问。然而,并非所有的COM属性都能够满足这些严格的限制。例如,Excel Range属性有一个Get访问器,需要为这个Range的名称提供一个参数。在过去,由于你不能直接访问这个Range属性,你必须使用get_Range方式,如下面的例子所示:

 
 C#
  // Visual C# 2008 and earlier.
  var excelApp = new Excel.Application();
  // . . .
  Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing);
  索引属性能够让你写如下代码:
  C#
  // Visual C# 2010.
  var excelApp = new Excel.Application();
  // . . .
  Excel.Range targetRange = excelApp.Range["A1"];
  备注:上面的例子还使用了Visual C# 2010中推出的可选参数功能。这个功能可以让你删除Type.Missing。

  同样,要设置Visual C# 2008和更早版本中的一个Range(范围)对象的值属性的值,需要两个参数。一个是提供指定这个Range值类型的可选参数的一个参数。另一个是提供这个值属性的值的参数。在Visual C# 2010之前,C#仅允许一个参数。因此,不使用一个正常的Set方式,你必须使用set_Value方式或者使用一个不同的属性Value2。下面的例子说明了这些技术。这两种方法都把A1单元的值设置为“Name”。

  C#

  // Visual C# 2008.

  targetRange.set_Value(Type.Missing, "Name");

  // Or

  targetRange.Value2 = "Name";

  索引属性能够让你编写如下代码代替:

  C#

  // Visual C# 2010.

  targetRange.Value = "Name";

  你不能创建你自己的索引属性。这个功能仅支持现有的索引属性的消耗。

  例子

  下面的代码显示了一个完整的例子。要了解更多的有关如何设置一个访问Office API的项目,参见“技巧:使用Visual C# 2010功能访问Office互操作对象”(C#编程指南)。网址是:http://msdn.microsoft.com/en-us/library/dd264733(VS.100).aspx

  
C#
  // You must add a reference to Microsoft.Office.Interop.Excel to run
  // this example.
  using System;
  using Excel = Microsoft.Office.Interop.Excel;
  namespace IndexedProperties
  {
  class Program
  {
  static void Main(string[] args)
  {
  CSharp2010();
  //CSharp2008();
  }
  static void CSharp2010()
  {
  var excelApp = new Excel.Application();
  excelApp.Workbooks.Add();
  excelApp.Visible = true;
  Excel.Range targetRange = excelApp.Range["A1"];
  targetRange.Value = "Name";
  }
  static void CSharp2008()
  {
  var excelApp = new Excel.Application();
  excelApp.Workbooks.Add(Type.Missing);
  excelApp.Visible = true;
  Excel.Range targetRange = excelApp.get_Range("A1", Type.Missing);
  targetRange.set_Value(Type.Missing, "Name");
  // Or
  //targetRange.Value2 = "Name";
  }
  }
  }

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统