摘要:
这个Bug可以简单描述为:在使用OpenFileDialog尝试打开一个不存在的文件的时候,OpenFileDialog本身会创建这个不存在的文件并删除它,然后告诉用户这个文件不存在。下面我们来写个程序来重现这个Bug。基本原理是使用FileSystemWatcher来监视文件夹。创建使用了如图1所示的程序。图1. 示例程序首先选择一个文件夹,并监视里面的文件改变。图2. 监视文件夹然后在被监视的... 阅读全文
2008年12月20日
2008年12月16日
摘要:
本来在写WPF Bug清单系列,但是写到第三篇(突然消失的ListViewItem)的时候发现重现BUG的逻辑很复杂。而且需要比较多的基础知识,如果不先解释清楚,实在是怕有人用“不用Valiation不就行了”等回复来砸场子。^_^ 本文从设计和应用的角度对DataBinding的Validation的不足进行了分析,假设读者使用过DataBinding中的Val... 阅读全文
2008年12月14日
摘要:
.NET Framework已经算是一个很易用的库了。可以自动地为我们做很多事情,而且大都做得还不错。但是自动完成的事情很可能会有隐患,因为Framework本身是并不了解业务逻辑的。它自动完成的事情,可能会给我们帮倒忙。RadioButton就是其中一个。先来从设置值的角度介绍一下WPF里的Dependency Property(以下简称DP)。在WPF里控制一个控件的DP,有太多的方式。可以用... 阅读全文
2008年12月13日
摘要:
从.NET 3.0发布至今,.NET Framework相继发布了.NET 3.5和.NET3.5 SP1。其间做了两个基于WPF的项目。发现现在的WPF的BUG真的是不算少。给程序的开发带来了不少的困扰——为了避开BUG,而不得不多写很多代码。这个“WPF BUG清单”系列,将列出笔者在项目中遇到过的WPF的各种问题,也许不一定是BUG,但是会造成开发上的不便。更感觉WP... 阅读全文
2008年12月7日
摘要:
这里的新技术不是指新近发布的技术,而是你不知道,或是没有使用过的技术或编程方式。抵触也不是说不愿意学习,而是指不愿意改变现状。 比如曾经遇到过的一个例子,有人自己写了一个判断一个元素是否已经存在于一个List中的函数。我以为他有什么特定的需求,结果一问才知道是因为他不知道List有Exists函数。 这个是最简单的情况。 在写程序的时候,有时就会遇到这样类似的情况。由于自己对框架不是很... 阅读全文
2008年11月28日
摘要:
接着上一篇《实例分析SharpDevelop代码完成功能》里添加的InsightWindow的功能。这回将要为那个CSharpCodeCompletion的Demo添加Boo语言的代码自动完成功能的支持。 Boo语言,可能不少人还没有听说过。好像是语言使用的排行榜上100名之外的一种编程语言。语法接近Python。就连Wiki上对它的介绍也少得可怜。目前支持这种语言的IDE只有SharpDev... 阅读全文
2008年11月25日
摘要:
发现很多软件颜色都很养眼,却不知具体的颜色值是多少,好参考一下。于是想做个屏幕取色的东西。不过这个东西纯粹是为了技术目的,用QQ就可以搞到这个颜色值,就连画笔都可以,只不过复杂些罢了。先把效果放上来。如图1。 图1 Color Picker(很土啊) 做这个东西只要解决如下的两个问题: 1. 全局鼠标钩子:做这个东西的唯一一个技术难点,虽然网上有各种C++的DLL实... 阅读全文
2008年11月23日
摘要:
有的时候,我们希望窗体程序也能接受命令行参数,以Console的方式运行。但是实现起来却要一些小技巧才能做到。如果做一个WPF程序,在Window的Loaded事件里写这样的语句: Console.WriteLine("Hello word."); 然后从CMD运行之。会发现这个语句根本没有输出出来。如图1所示。 图1... 阅读全文
2008年11月22日
摘要:
介绍 SharpDevelop的源代码里自带一个CSharp代码自动完成功能(Code Completion)的例子。如下图所示: 图1. 代码完成 看上去似乎好像挺不好做的,理论上要做词法分析、语法分析,还要解析一些如mscorlib之类的DLL。但是事实上SharpDevelop已经为我们做了这些,上面的例子只要写几个类就可以完成。整个Solution如下图所示: 图... 阅读全文
2008年11月20日
摘要:
这个基于LL分析器的计算器是大三时上编译原理的一个作业。感觉是自己做过相对比较有深度的一个程序。第一次放出来跟大家分享。希望多多指教。 这个计算器支持带括号的四则运算和乘方运算。具体实现过程如下: 词法分析器: 相关正则定义: DIGIT [0-9] NUMBER {DIGIT}((.{DIGIT}+)|{DIGIT}*) ... 阅读全文
2008年11月18日
摘要:
一、基于对象序列化的Undo\Redo 在Rockford Lhotka的CSLA框架中,介绍了一种基于保存序列化对象入栈的Undo\Redo实现方案。调用BeginEdit函数时,通过反射机制将整个业务对象的所有Field序列化,并保存在UndoStack中。在Undo时,将保存在UndoStack中的序列化的Map值读出来,对现有的业务对象进行数值还原。 由于使用对象序列化的方式来保存对象的历... 阅读全文
2008年11月16日
摘要:
从高中开始用的WIN98到现在的Vista,Windows平台在十年间也只经历了两次较大的更新(Windows ME、2000先不考虑了)。虽然每次都能带来很不一样的体验,让人耳目一新,但是三五年一次的更新速度,实在不能满足我对新鲜事物的渴望,也让我有足够 的时间在Windows和Linux之间跳来跳去。Fedora、Ubuntu等各种Linux发行版的存在也大大丰富了可选择的范围,而其基... 阅读全文
2006年11月23日
摘要:
点击下载 阅读全文