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

C# COM界面窗体的开发详解

作者:不详 出处:IT专家网 2010年02月03日 阅读:

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

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

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

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

using System;   
using System.Runtime.InteropServices;   
namespace Leading.Mis.NewsMonitor   
......{   
    /**//**//**//// <summary>  
    /// 消息监控接口的定义   
    /// </summary>  
    [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]   
    public interface INewsMonitor   
    ......{   
        发送文件时,记录发送者,接收者和发送的文件名发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名   
        /**//**//**//// <summary>  
        /// 当发送文件时,记录发送者,接收者和发送的文件名   
        /// </summary>  
        /// <param name="strSendID">文件发送者</param>  
        /// <param name="strTargetID">文件接受者</param>  
        /// <param name="strFileName">文件名</param>  
     [DispId(1)]   
        void SendFile(string strSendID,string strTargetID,string strFileName);   
        #endregion   
           
        接收文件时,记录文件接收者,发送者和发送的文件名接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名   
        /**//**//**//// <summary>  
        /// 接受文件时,记录文件接收者,发送者和发送的文件名   
        /// </summary>  
        /// <param name="strReceiveID">文件接收者</param>  
        /// <param name="strSendID">文件发送者</param>  
        /// <param name="strFileName">文件名</param>  
        [DispId(2)]   
        void RecvFile(string strReceiveID,string strSendID,string strFileName);   
        #endregion   
           
        文件发送成功后,记录发送者,接收者和发送的文件名文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名   
        /**//**//**//// <summary>  
        /// 文件发送成功后,记录发送者,接收者和发送的文件名   
        /// </summary>  
        /// <param name="strSendID">文件发送者</param>  
        /// <param name="strTargetID">文件接收者</param>  
        /// <param name="strFileName">文件名</param>  
        [DispId(3)]   
        void  FileSendOK(string strSendID,string strTargetID,string strFileName);   
        #endregion   
           
        取消文件发送时,记录发送者,接收者和发送的文件名取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名   
        /**//**//**//// <summary>  
        /// 取消文件发送时,记录发送者,接收者和发送的文件名   
        /// </summary>  
        /// <param name="strCancelID">取消文件发送者</param>  
        /// <param name="strTargetID">文件发送对方</param>  
        /// <param name="strFileName">文件名</param>  
        [DispId(4)]   
        void FileSendCancel(string strCancelID,string strTargetID,string strFileName);   
        #endregion   
           
    } // end interface INewsMonitor   
       
} //end namespace Leading.Mis.NewsMonitor 


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

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

       [ClassInterface(ClassInterfaceType.None)]

using System;   
using System.IO;   
using System.Runtime.InteropServices;   
 
namespace Leading.Mis.NewsMonitor   
......{   
    /**//**//**//// <summary>   
    /// 消息监控类的实现   
    /// </summary>   
    [Guid("1EA4DBF0-3C3B-11CF-810C-00AA00389B71")]   
    [ClassInterface(ClassInterfaceType.None)]   
    public class NewsMonitor : INewsMonitor   
    ......{   
        私有字段#region 私有字段   
           
        private string filePath = string.Empty;   
        private string writeLine = string.Empty;   
           
        #endregion   
 
        私有方法#region 私有方法   
           
        private  void NewsMsg()   
        ......{   
            StreamWriter sw = null;   
            if(File.Exists(filePath))   
            ......{   
                sw = File.AppendText(filePath);   
            }   
            else  
            ......{   
                FileStream fs = File.Create(filePath);   
                sw = new StreamWriter(fs);   
            }   
            sw.WriteLine(writeLine);   
            sw.Close();   
        }   
           
        #endregion   
           
        共有方法#region 共有方法   
           
        发送文件时,记录发送者,接收者和发送的文件名#region 发送文件时,记录发送者,接收者和发送的文件名   
    /**//// <summary>   
        /// 当发送文件时,记录发送者,接收者和发送的文件名   
    /// </summary>   
        /// <param name="strSendID">文件发送者</param>   
        /// <param name="strTargetID">文件接受者</param>   
        /// <param name="strFileName">文件名</param>   
               public void SendFile(string strSendID,string strTargetID,string strFileName)   
        ......{   
            filePath = @"c:MsgMonitorSendFile.txt";   
            writeLine = strSendID + " 向 " + strTargetID + " 发送 < " + strFileName + " > 文件";   
            NewsMsg();   
        }   
        #endregion   
           
     接收文件时,记录文件接收者,发送者和发送的文件名#region 接收文件时,记录文件接收者,发送者和发送的文件名   
    /**//// <summary>   
        /// 接受文件时,记录文件接收者,发送者和发送的文件名   
    /// </summary>   
        /// <param name="strReceiveID">文件接收者</param>   
        /// <param name="strSendID">文件发送者</param>   
        /// <param name="strFileName">文件名</param>   
               public void RecvFile(string strReceiveID,string strSendID,string strFileName)   
        ......{   
            filePath = @"c:MsgMonitorRecvFile.txt";   
            writeLine = strReceiveID + " 接收到 " + strSendID + " 发送的 < " + strFileName + " > 文件";   
            NewsMsg();    
}   
        #endregion   
           
        文件发送成功后,记录发送者,接收者和发送的文件名#region 文件发送成功后,记录发送者,接收者和发送的文件名   
    /**//// <summary>   
        /// 文件发送成功后,记录发送者,接收者和发送的文件名   
    /// </summary>   
        /// <param name="strSendID">文件发送者</param>   
        /// <param name="strTargetID">文件接收者</param>   
        /// <param name="strFileName">文件名</param>   
               public void  FileSendOK(string strSendID,string strTargetID,string strFileName)   
        ......{   
            filePath = @"c:MsgMonitorFileSendOK.txt";   
            writeLine = strSendID + " 已经成功向 " + strTargetID + " 发送 < " + strFileName + " > 文件";   
            NewsMsg();   
        }   
        #endregion   
           
       取消文件发送时,记录发送者,接收者和发送的文件名#region 取消文件发送时,记录发送者,接收者和发送的文件名   
    /**//// <summary>   
        /// 取消文件发送时,记录发送者,接收者和发送的文件名   
    /// </summary>   
        /// <param name="strCancelID">取消文件发送者</param>   
        /// <param name="strTargetID">文件发送对方</param>   
        /// <param name="strFileName">文件名</param>   
               public void FileSendCancel(string strCancelID,string strTargetID,string strFileName)   
        ......{   
            filePath = @"c:MsgMonitorFileSendCancel.txt";   
            writeLine = strCancelID + " 取消和 " + strTargetID + " 发送 < " + strFileName + " > 文件";   
            NewsMsg();   
        }   
        #endregion   
           
        #endregion    
    } // end class NewsMonitor   
       
} //end namespace Leading.Mis.NewsMonitor 

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

Regasm NewsMsg.dll / tlb: NewsMsg.tlb 

热推产品

  • 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
在线客服
在线客服系统
在线客服
在线客服系统