『参考』.net CF组件编程(1)——基础之后

前言:

  最近,自己动手做了个Tcp的小程序,用于手机和台式机之间的局域网数据传输,说起这个来,总是要通过编写通讯类基础代码来实现(可以说是我的复用做的不够好),拿给别人用(主要是开发人员朋友)也是觉得不方便,所以到园子里,查了一些关于组件(Component)的资料,发现有一个不错哦,他的博文地址如下:http://www.cnblogs.com/mapserver/category/65343.html,说了很多.net组件编程的东西。当然,我的这几篇随笔也是参考他写的而来,只是被我移植到.net cf上面了。在此要感谢mapserver的分享!

  在这一篇“基础”中,我就不再重复Mapserver的基础部分了,这里主要和大家分享一下我的一些经验,以免大家走了弯路。

正文:

  首先,如何创建一个组件项目,我就不多说了,只需记得我们要用在.net cf下,应该从智能设备项目中开始创建类库即可!然后,将我们的类继承:Component,即可,当然,记得引用:using System.ComponentModel;

  其次,我们再为组件添加属性时,那些PropertyAttribute标签,形如:[Category("Customer's Details"), Description("Customer's Sex")] 的东东,在.net cf中已经不复存在,那么如何让组件的属性(公开的),在设计时可见呢,如下图:

属性

  经过同仁指点,大家可以到这里看到解决办法,经过我的实验,果真通过:http://www.cnblogs.com/OSCAR_NJU/archive/2008/04/02/1134231.html,这就是为移动组件添加属性描述的方法。可谓经典啊!

  说了这么多,可能已经有朋友,照着开篇的连接进入Mapserver的文章,并动手实验了一把,我也比较喜欢自己动手的,所以,下面我们就一步一步来,写一个基础的.net cf组件吧,组件的功能是Tcp连接测试(为了方便才使用这个话题,你可以换成你自己的东东呢)。

 

动手部分:

  首先,还是新建一个智能设备项目,解决方案名称自定,然后选择WM5平台,用.net cf 2.0框架,项目类型请使用类库,名称就叫做“TCPComponent"吧,然后,修改默认的Class1.cs名称为:TCPHelper.cs,之后,在此文件的代码中,添加引用,以及让类继承Component。

using System.ComponentModel;

public class TCPHelper : Component

此时,你应该能发现,TcpHelper.cs的图标变成组件的样子了吧,反正不是原来的绿色的鸟~。好的,然后,让我们为组件添加公开的属性吧,主要有两个,第一个是远程主机的ip地址,在设计时以及运行时都能设置,其次是连接端口,我们在类的结构中申明这两个属性:

 

申明属性
private String host;
        
private Int32 port;
        

        
#region 主机地址
        
/// <summary>
        
/// 远程主机地址
        
/// </summary>
        public string HostName
        {
            
get
            {
                
return host;
            }
            
set
            {
                
if (value == null || value.Trim().Length == 0)
                {
                    
throw new ArgumentException("Invalid Host name.");
                }
                host 
= value;
            }
        }
        
#endregion

        
#region 端口号
        
/// <summary>
        
/// 通讯使用的端口号
        
/// </summary>
        public int Port
        {
            
get
            {
                
return port;
            }
            
set
            {
                
if (value == 0 || value > 65535)
                {
                    
throw new ArgumentException("Invalid port Number.");
                }
                port 
= value;
            }
        }
        
#endregion

 

ok,编译一下,应该能通过了吧,然后在解决方案中,添加一个WM5的应用程序项目,应该能在工具箱上,看到TCPHelper这个带齿轮的组件,如果看不到,请右键单击工具箱,选择项——》然后手动添加组件的dll文件。

你会发现,把组件拖到设计界面上后,那些属性值居然没有描述,也没有分类,再参考上文提到的那篇文章后,我们右键点击组件项目的名字,选择“添加项”,在选择“设计时属性文件”,在这个文件中,我们添加如下信息:

 

Code
<Class Name="TCPComponent.TCPHelper">
    
<DesktopCompatible>
      true
    
</DesktopCompatible>
    
<Property Name="Port">
      
<Category>自定义</Category>
      
<DefaultValue>
        
<Type>System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Type>
        
<Value>0</Value>
      
</DefaultValue>
      
<Description>此处设置远程主机的端口号,应该在1024至65535的范围内设定,测试时请和服务器端设为相同端口</Description>
      
<Browsable>true</Browsable>
    
</Property>
    
<Property Name="HostName">
      
<Category>自定义</Category>
      
<DefaultValue>
        
<Type>
          System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
        
</Type>
        
<Value>192.168.1.1</Value>
      
</DefaultValue>
      
<Description>此处设置远程主机的IP地址,应该以4点分发进行输入,测试时请输入服务器ip地址</Description>
      
<Browsable>
        true
      
</Browsable>
    
</Property>
</Class>

 

再编译一下,重新把工具箱中的组件拖入设计界面,是不是就有属性描述和分类了呢?如下图:

ok,这里基本上,就完成了一个基本组件的设置,在下一篇的随笔,我将介绍如何为组件添加方法,以及属性默认值的处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值