C# COM组件开发之界面窗体

开发 后端
这里我们将介绍C# COM组件开发之界面窗体,希望通过本文能让大家对C# COM组件开发有所了解。
C# COM组件开发,我们这里将讲到的是界面窗体的开发。将从定义接口开始,再讲类的实现以及用Regasm 工具进行注册等等,希望对大家有所帮助。

C# COM组件开发1,定义接口

(1)在接口上方加上[Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]

(2)在每个方法上加上[DispId(i)]

  1. using System;  
  2. using System.Runtime.InteropServices;  
  3. namespace Leading.Mis.NewsMonitor  
  4. ......{  
  5.     /**//**//**//// <summary> 
  6.     /// 消息监控接口的定义  
  7.     /// </summary> 
  8.     [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]  
  9.     public interface INewsMonitor  
  10.     ......{  
  11.         发送文件时,记录发送者,接收者和发送的文件名发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名  
  12.         /**//**//**//// <summary> 
  13.         /// 当发送文件时,记录发送者,接收者和发送的文件名  
  14.         /// </summary> 
  15.         /// <param name="strSendID">文件发送者</param> 
  16.         /// <param name="strTargetID">文件接受者</param> 
  17.         /// <param name="strFileName">文件名</param> 
  18.      [DispId(1)]  
  19.         void SendFile(string strSendID,string strTargetID,string strFileName);  
  20.         #endregion  
  21.           
  22.         接收文件时,记录文件接收者,发送者和发送的文件名接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名  
  23.         /**//**//**//// <summary> 
  24.         /// 接受文件时,记录文件接收者,发送者和发送的文件名  
  25.         /// </summary> 
  26.         /// <param name="strReceiveID">文件接收者</param> 
  27.         /// <param name="strSendID">文件发送者</param> 
  28.         /// <param name="strFileName">文件名</param> 
  29.         [DispId(2)]  
  30.         void RecvFile(string strReceiveID,string strSendID,string strFileName);  
  31.         #endregion  
  32.           
  33.         文件发送成功后,记录发送者,接收者和发送的文件名文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名  
  34.         /**//**//**//// <summary> 
  35.         /// 文件发送成功后,记录发送者,接收者和发送的文件名  
  36.         /// </summary> 
  37.         /// <param name="strSendID">文件发送者</param> 
  38.         /// <param name="strTargetID">文件接收者</param> 
  39.         /// <param name="strFileName">文件名</param> 
  40.         [DispId(3)]  
  41.         void  FileSendOK(string strSendID,string strTargetID,string strFileName);  
  42.         #endregion  
  43.           
  44.         取消文件发送时,记录发送者,接收者和发送的文件名取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名  
  45.         /**//**//**//// <summary> 
  46.         /// 取消文件发送时,记录发送者,接收者和发送的文件名  
  47.         /// </summary> 
  48.         /// <param name="strCancelID">取消文件发送者</param> 
  49.         /// <param name="strTargetID">文件发送对方</param> 
  50.         /// <param name="strFileName">文件名</param> 
  51.         [DispId(4)]  
  52.         void FileSendCancel(string strCancelID,string strTargetID,string strFileName);  
  53.         #endregion  
  54.           
  55.     } // end interface INewsMonitor  
  56.       
  57. } //end namespace Leading.Mis.NewsMonitor 

C# COM组件开发2,类的实现

(1)在类的上方加上 [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]
                      [ClassInterface(ClassInterfaceType.None)] 

  1. using System;  
  2. using System.IO;  
  3. using System.Runtime.InteropServices;  
  4.  
  5. namespace Leading.Mis.NewsMonitor  
  6. ......{  
  7.     /**//**//**//// <summary>  
  8.     /// 消息监控类的实现  
  9.     /// </summary>  
  10.     [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]  
  11.     [ClassInterface(ClassInterfaceType.None)]  
  12.     public class NewsMonitor : INewsMonitor  
  13.     ......{  
  14.         私有字段#region 私有字段  
  15.           
  16.         private string filePath = string.Empty;  
  17.         private string writeLine = string.Empty;  
  18.           
  19.         #endregion  
  20.  
  21.         私有方法#region 私有方法  
  22.           
  23.         private  void NewsMsg()  
  24.         ......{  
  25.             StreamWriter sw = null;  
  26.             if(File.Exists(filePath))  
  27.             ......{  
  28.                 sw = File.AppendText(filePath);  
  29.             }  
  30.             else 
  31.             ......{  
  32.                 FileStream fs = File.Create(filePath);  
  33.                 sw = new StreamWriter(fs);  
  34.             }  
  35.             sw.WriteLine(writeLine);  
  36.             sw.Close();  
  37.         }  
  38.           
  39.         #endregion  
  40.           
  41.         共有方法#region 共有方法  
  42.           
  43.         发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名  
  44.     /**//// <summary>  
  45.         /// 当发送文件时,记录发送者,接收者和发送的文件名  
  46.     /// </summary>  
  47.         /// <param name="strSendID">文件发送者</param>  
  48.         /// <param name="strTargetID">文件接受者</param>  
  49.         /// <param name="strFileName">文件名</param>  
  50.                public void SendFile(string strSendID,string strTargetID,string strFileName)  
  51.         ......{  
  52.             filePath = @"c:MsgMonitorSendFile.txt";  
  53.             writeLine = strSendID + " 向 " + strTargetID + " 发送 < " + strFileName + " > 文件";  
  54.             NewsMsg();  
  55.         }  
  56.         #endregion  
  57.           
  58.      接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名  
  59.     /**//// <summary>  
  60.         /// 接受文件时,记录文件接收者,发送者和发送的文件名  
  61.     /// </summary>  
  62.         /// <param name="strReceiveID">文件接收者</param>  
  63.         /// <param name="strSendID">文件发送者</param>  
  64.         /// <param name="strFileName">文件名</param>  
  65.                public void RecvFile(string strReceiveID,string strSendID,string strFileName)  
  66.         ......{  
  67.             filePath = @"c:MsgMonitorRecvFile.txt";  
  68.             writeLine = strReceiveID + " 接收到 " + strSendID + " 发送的 < " + strFileName + " > 文件";  
  69.             NewsMsg();   
  70. }  
  71.         #endregion  
  72.           
  73.         文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名  
  74.     /**//// <summary>  
  75.         /// 文件发送成功后,记录发送者,接收者和发送的文件名  
  76.     /// </summary>  
  77.         /// <param name="strSendID">文件发送者</param>  
  78.         /// <param name="strTargetID">文件接收者</param>  
  79.         /// <param name="strFileName">文件名</param>  
  80.                public void  FileSendOK(string strSendID,string strTargetID,string strFileName)  
  81.         ......{  
  82.             filePath = @"c:MsgMonitorFileSendOK.txt";  
  83.             writeLine = strSendID + " 已经成功向 " + strTargetID + " 发送 < " + strFileName + " > 文件";  
  84.             NewsMsg();  
  85.         }  
  86.         #endregion  
  87.           
  88.        取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名  
  89.     /**//// <summary>  
  90.         /// 取消文件发送时,记录发送者,接收者和发送的文件名  
  91.     /// </summary>  
  92.         /// <param name="strCancelID">取消文件发送者</param>  
  93.         /// <param name="strTargetID">文件发送对方</param>  
  94.         /// <param name="strFileName">文件名</param>  
  95.                public void FileSendCancel(string strCancelID,string strTargetID,string strFileName)  
  96.         ......{  
  97.             filePath = @"c:MsgMonitorFileSendCancel.txt";  
  98.             writeLine = strCancelID + " 取消和 " + strTargetID + " 发送 < " + strFileName + " > 文件";  
  99.             NewsMsg();  
  100.         }  
  101.         #endregion  
  102.           
  103.         #endregion   
  104.     } // end class NewsMonitor  
  105.       
  106. //end namespace Leading.Mis.NewsMonitor 

C# COM组件开发3,用 Regasm 工具进行注册

  1. Regasm NewsMsg.dll / tlb: NewsMsg.tlb 

【编辑推荐】

  1. C#参差数组初始化概述
  2. C#数组初始化全面分析
  3. C#一维数组和多维数组浅谈
  4. C#参差数组初始化概述
  5. C#动态数组实例介绍
责任编辑:彭凡 来源: itgrass
相关推荐

2009-08-20 11:03:34

Visual C#使用

2009-08-21 09:14:47

C# Excel CO

2009-09-02 16:43:55

C#调用Excel的C

2009-09-24 15:10:54

C#调用COM组件

2009-08-03 14:36:08

c#组件

2009-09-18 19:09:41

C# COM组件

2009-07-03 10:33:07

C#创建COM组件

2009-09-07 06:18:57

C#窗体设计器

2009-09-24 14:59:38

C#编写COM组件

2009-08-10 14:23:39

C# Setting

2009-08-20 10:10:55

C#透明窗体

2009-09-16 13:05:32

C#组件开发

2009-08-19 14:35:12

C++和C#相互调用C

2009-08-03 13:10:03

2009-09-07 06:07:46

C#窗体设计

2009-08-13 10:42:31

C#窗体拖动事件

2009-09-07 06:31:32

C#窗体移动

2009-08-28 15:58:54

C#窗体里调用

2009-09-07 06:48:13

C#透明窗体

2009-09-07 04:19:56

C#窗体事件
点赞
收藏

51CTO技术栈公众号