dazuiniu's blog

cat /dev/dazuiniu/random

Archive for the ‘csharp’ tag

ListView模拟双击事件

View Comments

Windows Mobile 的 ListView 并没有直接的提供双击事件的机制,实际上他是有的,只是不叫这个名字,选中某个 item 可以触发一个 ItemActivate 的事件,而 ListView 可以选择以何种方式来触发,比如是一次单击,还是两次,如果是两次 click 的话,就可以模拟我们所需要的双击事件了。记得要把 ListView 属性中的 Activation 改成 TwoClick。

Written by dazuiniu

June 4th, 2010 at 9:49 am

Posted in usage

Tagged with , ,

StreamWriter需要关闭

View Comments

大嘴牛照着 MSDN 的文档抄了一把简单的文件写入的方法[1],但是在这篇文档里面并没有关闭这个流,大嘴牛又想当然了,结果发现实际运行的时候没有写入到该文件,必须把 close 的函数加上才可以,大嘴牛的平台是 windows mobile 的 professional emulator。例如是这样的:

            StreamWriter sw = File.CreateText(fileName);
            sw.WriteLine(stringa);
            sw.WriteLine(stringb);
            sw.Close();     // 重要

[1]. http://msdn.microsoft.com/en-us/library/system.io.file.aspx

Written by dazuiniu

June 4th, 2010 at 9:41 am

Posted in bugs

Tagged with , , ,

Windows Mobile 小项目后记

View Comments

大嘴牛最近在做的一个小小的关于 Windows Mobile 平台的项目,在此记录一下遇到的一些傻逼问题:

  1. 连接问题。Windows Mobile 的模拟器默认无法访问外部网络,必须安装 Virtual PC 2007,利用他关于虚拟机的网卡驱动还可以访问。另外还需要简单设置一下,在第一个菜单中选择 configure ,在 network 标签页中选中 connect checkbox。
  2. SQL语句的单引号截断问题。大嘴牛没有利用高级的 Linq 功能,而是手动组成 SQL 语句,类似像这样的
    "INSERT INTO ... VALUES ('" + string + "')"

    但是这里如果 string 中本来就存在单引号,那么这个 SQL 语句就会被截断,从而产生错误。

  3. 注意程序是否有副作用。这里的副作用主要是指是否存在一些文件遗留,数据库文件遗留的问题。大嘴牛就遇到了这样的问题。在第一次模拟器上执行的时候创建一个数据库文件,随后调试终止,但是数据库文件依然存在,虽然程序中的逻辑被修改了,但是当第二次调试开始的时候,逻辑中先检查了该数据库文件是否存在,如果存在,就利用之,这就导致了新的代码可能为被执行,甚至数据库中的字段没有及时更新。
  4. C#的多线程参数传递。带参数的线程建立在 Mobile 平台上并不存在,那么如何对于一个 thread 传入参数呢?可以考虑将参数先作为一个类的属性传入,而是启动不带参数的函数作为线程主线索,再在这个函数中使用同一个实例刚才传入的属性。有点类似这样:
    Class cl = new Class();
    cl.Arg = arg;
    Thread thread = new Thread(new ThreadStart(cl.MainFunction));
    

Written by dazuiniu

June 1st, 2010 at 11:13 pm

Posted in bugs

Tagged with , ,