前言:

  最近,自己动手做了个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,这里基本上,就完成了一个基本组件的设置,在下一篇的随笔,我将介绍如何为组件添加方法,以及属性默认值的处理。

转载于:https://www.cnblogs.com/longqi293/archive/2009/11/27/1611846.html

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

  1. 『参考』.net CF组件编程(4)——为自定义组件添加工具箱图标!

    前言: 在前三篇的文章中,和大家一起创建了一个用于TCP连接检测的小组件,如果你记不得了,可以通过以下链接去回顾一下: 『参考』.net CF组件编程(1)--基础之后 『参考』.net CF组件编程 ...

  2. 『参考』使用.net CF自带库判断设备的连接状态

    问题来自 MSDN Forums : ActiveSync 连线状态 简述如下 如何抓出目前是否与 ActiveSync 连线状态,比如有连线就等于 True,没连线就等于 False 我试过 Act ...

  3. 『原创』+『参考』亲手实验:使用C#在PPC中播放声音

    今天,项目中要求用声音来提示用户程序的某个状态被激活了,发现,.Net CF下没有System.Media这种好东东鸟-,于是乎,股沟.百毒最后再来个ZZK,发现MSDN和小镇的文章都有提及在PPC下 ...

  4. 『原创』.Net CF下ListView的数据绑定

    首先,需要说明的是,在网络上已经有很多关于ListView数据绑定的文章了,但是,大部分是针对Winform的,那么对于很多新手来说可能对从Winform移植代码到.net cf平台会感觉很难,因为很 ...

  5. 『参考』OpenNETCF的动手实验——WIFI

    最近,闲啊,看首页文章都看烦了(不是骂就是被骂,唉---),索性来鼓捣一下OpenNETCF这个玩意儿,这篇文章就从WIFI的控制开始说起吧. 首先,你可能会上网搜".net cf msdn ...

  6. 『原创』+『参考』基于PPC的图像对比程序——使用直方图度量

    前言的前言: 最近小弟闲来无聊,就想到了在PPC上面来做个图像对比的小东东,查找各方资料,终于在今天初步完成了这个程序,现在整理之后和各位共勉.程序中还存在很多不足之处,大家尽管提出自己的意见和建议, ...

  7. 『原创』+『参考』使用WMI在C#下获取U盘的永久不变的物理序列号

    近几天想做个只能在优盘里使用的程序,查了很多相关的获取优盘物理序列号的文章,发现基本没有几个现存的,于是就从一英文网站抄了个过来,原文名称:Retrieving Non-Volatile USB Se ...

  8. 『原创』+『参考』使用C#在PPC的Today界面上的任务栏加入应用程序图标

    最近在做的一个项目,需要程序像桌面版的"微缩"到任务栏中,类似于QCellCore的功能.于是乎股沟.百毒一番,发现如下两篇文章提及的方法不错,并且通过我亲手实验,验证了两篇文章所 ...

  9. iOS 开发:『Runtime』详解(二)Method Swizzling

    本文用来介绍 iOS 开发中『Runtime』中的黑魔法Method Swizzling. 通过本文,您将了解到: Method Swizzling(动态方法交换)简介 Method Swizzlin ...

  10. 『电子书』分享一波码农必备编程开发类书籍[转]

    分享一些书籍 看到书籍很多,感觉很不错,就收藏下来了,是百度盘的连接,失效的可以评论一下以此更新一下连接. 书籍清单 Python编程快速上手 细说PHP(第2版) Python核心编程(第3版) L ...

最新文章

  1. 搜索引擎原理和简单过程【转】
  2. tensorflow综合示例4:逻辑回归:使用Estimator
  3. 在实际项目中使用LiteDB NoSQL数据库
  4. 面试技巧:16个经典面试问题回答思路(转)
  5. python函数-返回菲波那切数列for,range,append
  6. 解决 U盘安装Windows Server 2012 R2 报错 Windows 无法打开所需的文件 Sources\install.wim...
  7. MFC DLL向导(二)
  8. SQL将A表的现有数据添加到B表,通过A表现有数据更新B表
  9. kepware mysql_Kepware实现向数据库实时写入数据
  10. 工作计划进度甘特图.xlsx
  11. 阿里巴巴java方向笔试题 带详细答案
  12. Max Script|控制器-位置约束_path
  13. 【ExtJS6开发日记(一)】——Chart类型无法加载,及ExtJS中出现requires无法加载情况的统一说明
  14. argb和rgb风扇的区别是什么
  15. ae合成设置快捷键_AE超实用快捷键你了解多少?
  16. 关于教程被人盗版出售的一些感想
  17. java电影推荐系统_电影推荐系统源代码
  18. 二项堆(Binomial Heap)
  19. 15. 计算几何:圆的表示 点、直线、线段与圆的关系
  20. 抽奖系统小程序,多方式真实展示抽奖功能

热门文章

  1. opencv舌头监测模型+keras神经网络(LeNet)
  2. Openfire 4.1.0
  3. IIS------配置.Net 4.0
  4. 汇编---3---物理地址
  5. jQuery对象复制
  6. App调试内存泄露之Context篇(下)-App调试内存泄露之Context篇(下)
  7. SharePoint2007文档的点击率统计
  8. Google docs支持上传任何文档包括pdf...Cool!
  9. 一个基于 SpringBoot+Redis+Vue 仿饿了么外卖系统(后台+移动端),可二次开发接私活!...
  10. 图解 MySQL 索引,写得实在太好了!