wince6.0的C#调试心得(一)

来源:互联网 发布:软件无法放大缩小 编辑:程序博客网 时间:2024/05/17 23:16

最近我使用VS2005+Wince6.0开发了一个Wince Application程序。

1.在调试程序时,虽然在程序中加了断点,但是提示当前不会命中断点 尚未加载指定的模块”。经过查找资料,知道是由于.net Compact Framework 版本不兼容的问题。在添加删除程序中,看到自己装的是.net Compact Framework2.0 ,于是根据网上的资料,我在MSDN上下载了一个新版的.net Compact Framework,它的名字是.NET CF v2.0sp1,即带SP1补丁的.net Compact Framework, 它的下载地址是:http://www.microsoft.com/downloads/details.aspx?familyid=0c1b0a88-59e2-4eba-a70e-4cd851c5fcc4&displaylang=en 。下载完毕之后,安装时会提示另外一个版本的改程序已经安装。于是,我先卸载.net Compact Framework2.0,然后再安装下载的新程序。安装完毕以后,就可以正常调试程序了。

2.对于GPRS发送汉字到服务器,首先需要选择GPRS的数据模式,AT%IOMODE=1,1,0(注意这里的第一个1不能是0,0表示发送ASCII码,而汉字的unicode码会超过128??,具体参见华为EM310AT命令手册),其次对汉字进行GBK编码,具体函数如下,得到的s1即为最终的需要用AT%IPSEND="s1“\n的数据

string sendmessage = "123我爱你";

               byte[] gbk = Encoding.GetEncoding("GBK").GetBytes(sendmessage);
               string s1 = "";
               foreach (byte p in gbk)
               {
                   s1 += string.Format("{0:X2}", p);
               }

3.C# Winform程序退出方法

1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;

2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;

3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;

4.System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。

4.C#中Split用法

1)、用字符串分隔: 
using System.Text.RegularExpressions;
string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
输出结果:
aaa
bbb
ccc
2)、用多个字符来分隔:
string str="aaajbbbscccjdddseee"; 
string[] sArray=str.Split(new char[2] {'j','s'}); 
foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 
输出结果:
aaa
bbb
ccc
ddd
eee
3)、用单个字符来分隔:
string str="aaajbbbjccc";
string[] sArray=str.Split('j');
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
输出结果:
aaa
bbb
ccc

 
////////////////////////////////////////////////
string[] arr = str.Split("o");

这是一个具有语法错误的语句,Split 的 separator 参数应该是char[] 或 string[],不应是字符串。正确的示例:

string str = "technology";
char[] separator = { 'o' };
string[] arr = str.Split(separator);
////////////////////////////////////////////////////

String.Split 方法有6个重载函数:
程序代码
1) public string[] Split(params char[] separator)
2) public string[] Split(char[] separator, int count)
3) public string[] Split(char[] separator, StringSplitOptions options)
4) public string[] Split(string[] separator, StringSplitOptions options)
5) public string[] Split(char[] separator, int count, StringSplitOptions options)
6) public string[] Split(string[] separator, int count, StringSplitOptions options)

下边我们通过一些实例来说明下怎么使用(以下string words = "1,2.3,,4";):
1. public string[] Split(params char[] separator)
程序代码
string[] split = words.Split(new Char[] { ',' });//返回:{"1","2.3","","4"}
string[] split = words.Split(new Char[] { ',', '.' });//返回:{"1","2","3","","4"}
2. public string[] Split(char[] separator, int count)ITPUB个人空间,n:H!C0M/S3U\u0002P
程序代码
string[] split = words.Split(new Char[] { ',', '.' }, 2);//返回:{"1","2.3,,4"}
string[] split = words.Split(new Char[] { ',', '.' }, 6);//返回:{"1","2","3","","4"}
3. public string[] Split(char[] separator, StringSplitOptions options)
程序代码
string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
string[] split = words.Split(new Char[] { ',', '.' }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
4. public string[] Split(string[] separator, StringSplitOptions options)
程序代码
string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
\u0002w1I+Ch%^\u0017}0string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
5. public string[] Split(char[] separator, int count, StringSplitOptions options)
程序代码
string[] split = words.Split(new Char[] { ',', '.' }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素
string[] split = words.Split(new Char[] { ',', '.' }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
6. public string[] Split(string[] separator, int count, StringSplitOptions options)
程序代码
string[] split = words.Split(new string[] { ",", "." }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素
string[] split = words.Split(new string[] { ",", "." }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
需要注意的是没有重载函数public string[] Split(string[] separator),所以我们不能像VB.NET那样使用words.Split(","),而只能使用words.Split(',')

5.C#的Win Form的控件基本使用方法

a.取消窗体右上角的最下化、最大化和×按钮的方法依次在窗体的属性栏的窗口样式里面的MinimizeBox、MaxmizeBox和ControlBox属性是false还是true,如果不需要标题栏,在属性栏的外观的FormBorderStyle属性设置为None即可

b.添加图片按钮——picturebox,再加入图片即可,但这样得到的图片按钮按下去没有按下去的感觉。

c.复制WinForm窗体——直接复制解决方案里面的cs文件再在解决方案名上点击右键点击粘贴即可复制得到一个副本,更改相应的类名,构造函数名即可。

d.TextBox多行显示——TextBox的multiLine设置为ture,如果需要滚动视图可以设置ScrollBars。

 

6.复制内容到剪切板

    if(textBox1.SelectedText != ”")
   { Clipboard.SetDataObject(textBox1.SelectedText);
  }

 

7.C#里调用外部应用程序:

System.Diagnostics.Process.Start("完整文件名");

 

附:《华为EM310AT命令手册》部分截图


原创粉丝点击