『参考』.net CF组件编程(3)——在移动设备项目中使用组件

前言:

  在前两篇的文章中,我们学会了给组件添加属性、事件,以及对这些属性和事件进行描述添加,今天,我们就来小试一把这个组件吧,如果你忘记了前两篇文章的内容,可以从这里回顾一下:

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

  『参考』.net CF组件编程(2)——为组件添加事件

  当然,由于涉及到TCP测试,所以,需要有一个局域网环境,我们要把模拟器配置成可以与局域网台式机交互的,所以你还需要参考如下文章:

  『原创』+『转载』配置模拟器网络环境(访问局域网)Step by Step!

  当你准备好之后,我们就开始吧

正文:

  打开我们之前创建的TCPComponent项目,在它的解决方案中,添加一个新的移动设备应用程序项目,就取名叫做:ComponentWM,使用.Net CF2.0的框架,WM5 PPC平台,Ok,整个解决方案如下图:

  然后,按照下图对Main.cs窗体进行设计:

  显而易见,一个statusBar显示连接状态,一个MenuItem按钮激发连接事件。同时,我们从左侧工具箱中把TcpHelper这个带齿轮的组件拖到设计界面,然后设置其属性如下,当然,具体的ip和端口应该和你测试的环境对应:

,然后设置属性

  准备工作完成,下面,我们双击TCPHelper组件的ConnectedStatu事件,然后再代码区自动生成一段类似双击了按钮之后的代码,我们填写如下:

ConnectedStatu代码
private void tcpHelper1_ConnectedStatu(string msg)
{
SafeWinFormsThreadDelegate d
= new SafeWinFormsThreadDelegate(ShowMessage);
Invoke(d,
new object[] { msg });
}

可以看到,有个委托,这个委托的代码如下:

private delegate void SafeWinFormsThreadDelegate(string msg);
private void ShowMessage(string msg)
{
statusBar.Text
= msg;
}

很简单,很清晰了吧。这些是对事件触发后的处理代码,那么,我们来试试TCPHelper主要的功能代码吧:TCP连接。

在这里,我们的远程主机是192.168.1.29,采用3000端口进行监听(服务器端是一个简单的命令行TCPServer程序),然后,双击那个“测试连接”按钮,添加如下代码:

代码

try
{
statusBar.Text
= "Connecting... ...";
tcpHelper1.ConnectAsync();
}
catch (Exception ex)
{
statusBar.Text
= ex.Message;
}

真的很简单,我就不用多说了。下面我们来看看实际运行效果吧:

1、启动客户端和服务器端

2、在客户端点击测试连接后,状态条显示Connecting。。。

3、如果服务器端未开启,则返回异常提示在状态条

4、如果正常连接上了,那么状态条显示成功连接,而且很快的又显示断开连接(这是因为我没有做Sleep处理,如果大家做一下处理,就可以看出来了)

具体截图就暂时不上了,当然,源代码当然会有,只是我想放在最后一篇文章中,为什么呢?其实在这里我们的组件还不算完整,因为,你发现没有,它在工具栏中使用齿轮表示,太难看了,再看看工具箱中其他组件或控件,都有自己的图标,那么如何给这个组件添加图标呢?我们在下一篇文章中再讨论吧。

PS:上一篇提到“默认属性值”的问题了,即使在设计时属性文档中定义了属性的默认值,但是在RunTime还是不能获取到这个默认值哦,具体的原因我引用一句话,详细内容可以参看如下地址:msdn中对DefaultValueAttribute的说明为: “可视化设计器可以使用默认值重置成员的值。代码生成器也可使用默认值确定是否为成员生成代码”

参考文档:

http://www.cnblogs.com/mapserver/category/65343.html 感谢Mapserver朋友

http://www.cnblogs.com/OSCAR_NJU/archive/2008/04/02/1134231.html 感谢死刑犯朋友(汗)

原文地址:https://www.cnblogs.com/longqi293/p/1615171.html