RegeX 3 正则表达式实践教程之 —— 在Eclipse中以装饰器模式包装接口
摘要: 在实现一个庞杂的接口时,往往需要付出很多体力劳动,例如这个: 以上是要实现的接口的一小部分方法,我们要实现此接口以包装其衍生类,由于仅仅是包装,只需要把所有方法都转交给被包装对象“getSource...
阅读全文
posted @
2012-01-03 08:32 斯克迪亚 阅读(897) |
评论 (2) 编辑
正则表达式替换器 RegeX 3 发布 (Silverlight版)
摘要:

继上一版本RegeX发布以来已有三年多了,此次发布全新设计的RegeX 3供广大开发者使用。
新版基于Silverlight开发,支持安装到本地运行,采用类似WindowsPhone7的Metro风格设计。
新版本的主打功能有两点:
支持无限层级的复杂多重匹配与替换
支持在替换时以$@符号引用经过处理后的组内容
这两个功能主要为了解决如下问题:
冗长的表达式结构。
在匹配复杂的格式时,使用的表达式不仅冗长,且晦涩如天书,一旦修改时不小心改变了某个符号后患无穷。
无限级多重替换功能将极大改善这一情况,你可以将替换工作拆分成若干个步骤,分别处理,使得思路清晰,表达式易于维护。
不可能的任务。
正则表达式是万能的,但万这个数字并不大,有很多格式是不可能或很难用一个表达式来完成的,很多时候我们需要自己来写一个新程序予以解决,而当有了$@引用功能,很多问题迎刃而解。
$@符
阅读全文
posted @
2012-01-02 04:28 斯克迪亚 阅读(1760) |
评论 (6) 编辑
Silverlight中后台代码设置TreeView选定项的方法
摘要: 当TreeView在XAML中以嵌套数据模板(HierarchicalDataTemplate)方式绑定数据时,其子元素都是特定类型的对象,而非TreeViewItem,这样就没法通过设置TreeVi...
阅读全文
posted @
2011-12-31 17:43 斯克迪亚 阅读(849) |
评论 (3) 编辑
Eclipse中Android项目引用其他项目时链接源码的方法
摘要:

参照前一篇文章《Eclipse中Android公共库的正确建立及调用方法》,以前只要在Android库中添加了引用,就能自动在项目中引入源码: 但是更新了新版SDK及ADT插件之后,源码不会被自动引...
阅读全文
posted @
2011-12-27 15:33 斯克迪亚 阅读(977) |
评论 (1) 编辑
Android 动态壁纸(Live Wallpaper)编写注意事项小记
摘要:

不要使用Thread
应直接使用Handler与Runnable接口对象组合运行。
使用Thread会产生一些莫名其妙的问题,比如:壁纸预览时报错;壁纸设置时报错;壁纸设置后闪一下即消失变为默认静态壁纸;壁纸设置后停止运行但切换到待机状态再切回还是能运行的。
当壁纸设置后消失时,在DDMS中看到产生的异常信息类似
...
阅读全文
posted @
2011-01-13 04:28 斯克迪亚 阅读(3932) |
评论 (4) 编辑
探讨求解:Android项目间如何实现资源复用?
摘要: 我们开发项目时,通常不仅代码需要复用,很多资源也是经常重用的,比如: 按钮上的图标 交互时发出的声音 某种功能所需的Activity布局 控件样式 常见的文字及其对应的各语言版本 比如这样一个软件分...
阅读全文
posted @
2011-01-09 05:02 斯克迪亚 阅读(1920) |
评论 (6) 编辑
Android Market 链接的生成与分享
摘要:

通过Java包名直接定位到你的App
http://market.android.com/details?id=
或者
market://details?id=
范例:market://details?id=com.skyd.luckywheel
这将直接在菜市场中显示你的App详细介绍页。
通过Java包名搜索App
http://market.android.com/search?q=pname:
或者
market://search?q=pname:
范例:market://search?q=pname:com.skyd.luckywheel
这将显示搜索到的App列表。
通过开发者名称搜索App
http://market.android.com/s阅读全文
posted @
2011-01-04 01:39 斯克迪亚 阅读(3753) |
评论 (5) 编辑
Android中MediaPlayer播放音乐时自动中断的解决办法
摘要: 今天尝试在一个有SurfaceView持续绘图的程序里加入背景音乐,遇到一个故障: 音乐播10几秒就中止了,此后再无声响。 尝试更换为其他mp3文件,无果。 尝试将播放操作由子线程转到主线程,依然不行...
阅读全文
posted @
2010-12-20 05:02 斯克迪亚 阅读(1210) |
评论 (3) 编辑
Eclipse导入Android项目的正确方法
摘要: 看网上流传的Eclipse导入项目的方法都是在新建Android程序时使用“Create project form existing source”选项实现的导入,虽然也能实现,但感觉很山寨的样子,而...
阅读全文
posted @
2010-11-25 01:08 斯克迪亚 阅读(4454) |
评论 (2) 编辑
在Eclipse中的Android项目里实现代码复用
摘要: 引言 开发时通常都会有多个项目间代码复用的需求,这时通常的做法是设置项目依赖,让一个项目引用另一个项目,比如在Visual Studio中这样就很容易实现。 而在Eclipse中的Android项目里...
阅读全文
posted @
2010-11-24 00:46 斯克迪亚 阅读(2220) |
评论 (9) 编辑
Android 1.6的dpi归属BUG
摘要: Android程序一般都有drawable-hdpi、drawable-mdpi、drawable-ldpi三个文件夹,用来放置不同分辨率的图片,由系统自动调用最合适的图片。 其对应关系为: hdpi...
阅读全文
posted @
2010-11-14 22:27 斯克迪亚 阅读(642) |
评论 (1) 编辑
让你的Android程序支持2.2版系统的APP2SD功能
摘要: APP2SD是Android2.2(冻酸奶)开始支持的新特性,可以让程序安装到存储卡,仅在手机内存(ROM)中保留一些必要的文件。
要想在自己程序中支持这一特性,需要在创建项目时将Build Target设为2.2(或更高版本)……
阅读全文
posted @
2010-11-12 20:10 斯克迪亚 阅读(2534) |
评论 (2) 编辑
关于Android的振动控制器(Vibrator)报SecurityException异常的问题
摘要: 网上介绍振动控制器代码的帖子往往都没有提到申请权限这点,使用Vibrator振动时必须在AndroidManifest.xml配置文件中申请android.permission.VIBRATE权限: ...
阅读全文
posted @
2010-11-11 03:07 斯克迪亚 阅读(873) |
评论 (0) 编辑
Android SurfaceView 绘图及帧频处理方法修正
摘要: 此文是针对上一篇《Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法》的修正。 帧频处理 今天我在审视上篇示例代码时猛然发现我犯了个低级错误,致使帧频达不到预期,这个错误在这里: ...
阅读全文
posted @
2010-11-08 23:44 斯克迪亚 阅读(2297) |
评论 (7) 编辑
Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法
摘要:

SurfaceView在Android中用作游戏开发是最适宜的,本文就将演示游戏开发中常用的两种绘图刷新策略在SurfaceView中的实现方法。
首先我们来看一下本例需要用到的两个素材图片:
bj.jpg就是一个渐变图,用作背景。
question.png是一个半透明的图像,我们希望将它放在上面,围绕其圆心不断旋转。
实现代码如下……
阅读全文
posted @
2010-11-08 03:17 斯克迪亚 阅读(8213) |
评论 (12) 编辑
Db4o中需要严格警惕类的继承问题
摘要: 先来看一个简易类图: 如果你打算将这样的类存储在Db4o中的话,那么会很容易产生灵异现象,我今天就亲历了…… 为产品对象添加一个附图后保存,下次重新开启数据库时读取到的产品的附图仍然是空的,而如果你...
阅读全文
posted @
2010-09-21 02:20 斯克迪亚 阅读(321) |
评论 (0) 编辑
关于Asp.Net中FileUpload控件属性PostedFile.ContentType的提示
摘要: PostedFile.ContentType这个属性通常用来判断上传文件的MIME类型,我们通常以此来拒绝某些类型的上传,比如仅允许上传图像文件,然而这个属性其实是很不稳定的: MIME类型没有统一...
阅读全文
posted @
2010-09-12 20:59 斯克迪亚 阅读(1922) |
评论 (3) 编辑
Asp.Net复合控件疑难与解决——尴尬的生命周期
摘要:

今天打算用Asp.Net复合控件技术制作一个服务器端的文件管理控件,基本实现构想如下:
设置一个属性,通过该属性指定此控件所管理的根目录路径
递归向下扫描指定的根目录下的所有子目录及文件,用TreeView控件将其显示出来
使TreeView显示复选框,用以勾选待处理文件,然后做进一步处理(复制、移动、删除)
在TreeView中单击某项后,可以对其进行重命名操作,也可以指示将勾选的文件复制、移动到所选目录中
TreeView基本效果如下图……
阅读全文
posted @
2010-09-11 03:58 斯克迪亚 阅读(1609) |
评论 (11) 编辑
关于Db4o的查询测试及疑惑
摘要: 在Entity Framework中,我们通过Take()方法可以仅取得指定数量的数据,并且Entity Framework也只是从数据库中取出指定数量的数据而直接返回。 而Db4o虽然也可以在原生查...
阅读全文
posted @
2010-09-10 01:19 斯克迪亚 阅读(1461) |
评论 (6) 编辑
Db4o结合Linq、Lambda表达式的简单示例
摘要:

大多数人接触Db4o的查询,都是从“样本查询”(Query by Example)开始的,这种查询方式简单但不方便,功能和性能也很受局限。以下是引自官方的样本查询示例:
// retrievePilotByName
Pilot proto=new Pilot("Michael Schumacher",0);
ObjectSet result=db.get(proto);
listResult(result);
这种查询要求我们先建立一个样本,然后再交由Db4o根据此样本返回符合条件的数据,其主要的不便之处在于对类默认值的处理及组合条件查询上,同时其执行性能是很差的。
而当Db4o开始支持.Net 3.5之后,我们就有了更为简单且又十分方便而强大的选择了,让我们来一起领略Db4o与.Net 3.5擦出的火花之美吧。
阅读全文
posted @
2010-09-08 01:08 斯克迪亚 阅读(1932) |
评论 (12) 编辑
WinForm实现鼠标悬停显示控件
摘要: 在某些需频繁操作的环节中,为提高效率、减少劳动,可以在操作细节上下功夫,以带来更好的用户体验。
今天介绍的鼠标悬停显示功能就是一例,看似仅仅节省了一次点击,实则在繁复操作中能够为用户节约很多体力,提高舒适度。
本例中的基本需求是:
鼠标移入设置区域后,直接弹出详尽设置内容,并当进行了设置或鼠标移出弹出的设置区域后,自动关闭弹出的设置区域。
在这里,我设计了5个按钮,以及一个日历控件,该日历控件就作为我们的详细设置内容,将其Visible属性设为False以隐藏。
阅读全文
posted @
2010-09-02 02:02 斯克迪亚 阅读(1123) |
评论 (4) 编辑
Eclipse 3.6 更新中文语言包的方法
摘要:

在网上找3.6版的中文包更新方法,总是找不到,找到的大都是3.3、3.4的更新方法:
看到论坛里太多的人要eclipse的中文语言包,但自从3.2.1之后官方不提供单独的下载,所以很多朋友用了3.3.x的版本,原来的语言包插件都不能使用了。今天到eclipse官方查资料,看到了一个新的子项目Babel (网址:http://www.eclipse.org/babel/downloads.php)按照官方介绍可以下载到最新的语言插件包,在此将这个消息告诉大家,希望对大家有所帮助。
注:到我发帖为止我只看到官方提供在线更新的方式提供下载。
用eclipse3.3.x里自己带的software updates
升级地址填写http://download.eclipse.org/t
阅读全文
posted @
2010-09-01 12:19 斯克迪亚 阅读(11953) |
评论 (0) 编辑
网页内嵌Windows Media Player播放器的多文件播放方法
摘要:

网页内嵌Media Player播放器很简单,以下代码即可完成一个简单的播放器:运行效果: 如何让播放器可以播放多个音频/视频文件?没法直接在HTML中添加多重filename参数实现多文件播放,可行的方法是:自行建立播放列表,然后将filename参数指向播放列表的位置。
以下C#代码用于创建一个Windows Media Player所支持的播放列表文件:
...
阅读全文
posted @
2010-06-20 00:38 斯克迪亚 阅读(3998) |
评论 (7) 编辑
WPF命中测试示例(二)——几何区域命中测试
摘要:

接续上次的命中测试,这次来做几何区域测试示例。
示例
首先新建一个WPF项目,在主界面中拖入一个按钮控件,并修改代码中的以下高亮位置:
当前设计视图界面如下:
接下来,转到窗体的“Window_Loaded”事件处理函数,编写函数代码…
阅读全文
posted @
2010-05-17 09:58 斯克迪亚 阅读(1508) |
评论 (0) 编辑
WPF命中测试示例(一)——坐标点命中测试
摘要:

命中测试也可被称为碰撞测试,在WPF中使用VisualTreeHelper.HitTest()方法实现,该方法用于获取给定的一个坐标点或几何形状内存在的视觉元素,此次我们的示例是坐标点命中测试。示例
首先使用Microsoft Expression Blend 3创建一个新的WPF应用程序项目:
在窗体上随意绘制几个图形,这里分别使用了:Rectangle、Ellipse、Path元素。
在右下角绘制一个ListBox控件,命名为l1:
在视觉树面板中选中Window:
在属性面板中单击事件类别,然后再MouseUp事件右侧空白处双击以添加事件处理:
至此,前台XAML代码如下:…
阅读全文
posted @
2010-05-10 12:32 斯克迪亚 阅读(1756) |
评论 (1) 编辑
自用扩展方法分享
摘要:

自从用上扩展方法以来,就欲罢不能了,它们大大提升了我的代码编写效率,现在我已对其产生了高度依赖。在此分享一下自己的常用扩展方法集,方便大家使用。
(其中有些是借鉴或挪用自其它博友的文章,在此尤其感谢鹤冲天的诸多分享)
这些都是我这里使用频率最高的扩展,希望对大家也同样有用:)
阅读全文
posted @
2010-01-15 00:10 斯克迪亚 阅读(3099) |
评论 (17) 编辑
简单的自动更新程序实现
摘要:

本文将演示一种桌面程序自动更新方案,其步骤比较多,但原理非常简单,通用性尚可,对于小型应用来说,直接拿去就可以用了。 原理 服务器端的结构是这样的: 其工作原理如下:Update.asmx仅提供一个功能,就是检测是否需要更新,在需要更新的时候就返回一个更新地址,通常情况下返回的地址就是Download.ashx,而在某些特殊情况下,也可以修改服务端使之从其他Url提供更新下载。检测是否需要更新的的具体做法是:首先获取Updata目录中的主程序版本号,再获取数据库中的最新版本号,两者对比。如果相同则直接与客户端提供的版本号相对比并返回结果;如果不同则将主程序版本号写入数据库,然后生成新的更新文件包,直接向客户端返回更新地址。
Download.ashx的功能仅仅是将最新版本更新文件
阅读全文
posted @
2009-12-21 08:08 斯克迪亚 阅读(9165) |
评论 (54) 编辑
WPF中不规则窗体与WebBrowser控件的兼容问题解决办法
摘要:

这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序。
播放器普遍都要有个看起来比较酷的外观,于是我就给设计了个不规则形状的带透明边框的外观,如下图:
……
但这个设计整合到WPF中时,却遇到了一个头疼的BUG:
只要设置窗体为AllowsTransparency="True" WindowStyle="None",内嵌的WebBrowser就无法显示了,但它还不是真的没有了,里面加载的视频还会正常播放、出声,甚至用鼠标去点网页内容还能正常交互,就是啥也看不到。
阅读全文
posted @
2009-12-16 00:55 斯克迪亚 阅读(3885) |
评论 (21) 编辑
WebBrowser抓图示例——截取网页上的验证码图片
摘要:

最近和一位朋友探讨获取WebBrowser访问的网页中验证图片的方法,起先想到的就是通过WebClient直接去下载当前页面中引用的验证码图片,但继而想到这会涉及很多问题,一是验证码可能会在每次请求时都发生变化,二是将WebClient与WebBrowser的Cookies甚至Session关联起来是件很难的事。
而后就想到了可以放弃WebBrowser,始终使用WebRequest进行较为底层的访问,以避免多次获取验证码产生变化导致不一致的情况,不过这种办法操作起来还是比较复杂的。
然后又想到这种变通的方法——抓图。只需要直接通过WebBrowser截图,并将验证码以外的部分裁剪掉,就可以了。
阅读全文
posted @
2009-12-10 00:28 斯克迪亚 阅读(6925) |
评论 (47) 编辑
在配置文件(.settings、.config)中存储自定义对象
摘要:

我前面曾写过一篇《使用配置文件(.settings、.config)存储应用程序配置》,我在其中指出“settings无法实现对一些复杂类型及自定义类型的支持”。
而今天我发现其实它是支持自定义类型的,仅仅是不能支持本项目中的自定义类型,可以支持引用的项目或类库的自定义类型。至于为什么不支持本项目中的自定义类型,我也不得而知,猜想可能是怕加载时造成冲突吧。
阅读全文
posted @
2009-11-30 23:04 斯克迪亚 阅读(2199) |
评论 (11) 编辑
EntityDataSource中的SessionParameter使用小记
摘要:

今天在用到SessionParameter的时候真是抓狂了,改了半天都报错,网上搜也没有找到类似遭遇的记录,费了好半天才鼓捣出来~~在此记录一下过程。 首先插入一个EntityDataSource,并...
阅读全文
posted @
2009-11-19 22:58 斯克迪亚 阅读(724) |
评论 (3) 编辑
下载文件时根据MIME类型自动判断保存文件的扩展名
摘要:

用WebClient下载远程资源时,经常会遇到类似这样的网址:
http://www.uushare.com/filedownload?user=icesee&id=2205188
http://www.guaishow.com/u/luanfujie/g9675/
我们不知道这个Url具体代表的是一个网页,还是某种类型的文件。
而有些Url虽然带有扩展名,但可能是错误的扩展名,常见的比如把gif文件标上了jpg扩展名。
如果我们没法正确判断下载源的文件类型的话,就无法保存为正确的文件格式,会给后续操作及人工阅览造成困扰。
所幸的是,WebRequest可以给出下载源的MIME信息,这让我们可以确定文件的真实格式,并以此来决定最终的存储扩展名
阅读全文
posted @
2009-11-12 01:46 斯克迪亚 阅读(3001) |
评论 (16) 编辑
.Net中绝对路径与相对路径(如“..\a.txt”)的拼合方法
摘要:

在做文件路径处理时,经常需要对一个路径的相对路径进行操作,那么如何拼合相对路径以生成新的绝对路径呢?
我们知道System.IO.Path是专门用来处理路径的静态类,它有一个Combine()方法就是用于拼接路径的,我们来测试一下其拼接效果。
我们使用一个命令行程序进行测试,这里要测试相对于文件C:\abc\123\avatar.html的一系列相对路径,测试代码如下……
阅读全文
posted @
2009-11-04 00:05 斯克迪亚 阅读(4151) |
评论 (13) 编辑
稍加改进的Switch/Case扩展方法
摘要:

鹤冲天的《c#扩展方法奇思妙用》系列给了我很多启示,其中的很多用法大大提升了代码编写效率,最近小研究了一下他提供的《c#扩展方法奇思妙用变态篇三:switch/case组扩展》一文提供的扩展方法,并依照自己的习惯重新实现了一下,现分享一下我的实现。
这样的扩展除了让代码显得更复杂以衬托出作者之牛B深奥之外,还有什么优点?
优点就是能在单句Lambda表达式中使用,这样就能让你更深奥一层……
哈哈,玩笑,不只是单句Lambda表达式,在充当方法的参数时,三元表达式又不够用的情况下,这样的扩展就大有用武之地了,你可以不必大费周章地再去定义临时的变量并给它赋值,或者专门建立一个方法来解决这类简单的判别问题。
它的形式可能不算优雅,
阅读全文
posted @
2009-10-26 00:39 斯克迪亚 阅读(3653) |
评论 (15) 编辑
使用配置文件(.settings、.config)存储应用程序配置
摘要:

我不知大家早先是如何保存应用程序配置,以备下次打开时使用的,反正我开始学.Net的时候就去研究序列化,以二进制或XML格式的序列化来保存应用程序配置。这样每次都要建立单独的配置类,并书写读写配置代码,相当麻烦。
期间也看了看.config文件的读写方式,感觉还是很麻烦,不如自己序列化来的踏实。
后来才猛然发现微软早提供好了settings,用以定义.config文件内容,并生成相应的强类型类,使用起来极其方便~,感觉就像在火星居住了半辈子突然发现还有地球这好地方*_*~
鉴于网上settings方面的资料不多、不详,我就以此文来介绍一下基本的用法,让小鸟们少走我那条破路,老鸟请直接从上空滑翔而过即可。...
阅读全文
posted @
2009-09-14 00:44 斯克迪亚 阅读(4359) |
评论 (49) 编辑
[分享]用于Asp.Net的敏感内容评审控件
摘要:

之前在这篇文章中分享了敏感内容评审类及其辅助工具:http://www.cnblogs.com/SkyD/archive/2009/08/21/1551112.html
此次分享的工具是在Asp.Net中使用的,其功能就是在网站后台中可视化地显示评审内容明细,以供评审人员参考。
评审人员可通过此控件一目了然地了解由机器分析得出的评审结果,继而更好地进行二次评审。
阅读全文
posted @
2009-08-31 02:00 斯克迪亚 阅读(3192) |
评论 (14) 编辑
[分享]敏感内容自动评审类库及辅助工具
摘要:

通过本类库,可以实现对输入内容的自动分析,并会给出评分,程序可以根据此评分判断内容是否达到某一敏感度级别,从而进行相应的自动化处理。
如果将此类库与人工评审相结合,效果将会非常好:机审认为有敏感嫌疑的内容自动提交到人工评审等待列表,由人工进行二次审核,这样在保证效率的同时又兼顾了准确性,是比较理想的人机协作方式。
此类库的运作原理请参考《改进的脏话审查方案》一文
...
阅读全文
posted @
2009-08-21 02:02 斯克迪亚 阅读(3308) |
评论 (38) 编辑
[SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap
摘要:

首先我要说明:Asp.Net内置的Sitemap与这里讲的Sitemap是完全不同的,Asp.Net中的Sitemap主要用于给用户导航,而这里说的Sitemap是用来给搜索引擎爬虫指路。
还是直接来看看官方解释吧:
什么是Sitemap?
Sitemap 可方便管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitepmap 形式,就是 XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。
……
阅读全文
posted @
2009-08-14 00:16 斯克迪亚 阅读(4538) |
评论 (26) 编辑
也谈Asp.Net编译错误CS0433 类型XXX同时存在于…
摘要:

一直好好的Asp.Net项目,晚上突然出现这个问题,于是搜索了一下,看到有人给出了比较好的解决办法:
出现这种错误大概有三种情况:
1、ASPX页面,一个*.ASPX,对应着一个*.cs文件,两者其实是一个文件,通过两者实现代码分离,每个*.aspx页面都引用着自身的CS文件:如果两个页面引用了相同得.CS文件,在发布得时候也会出现这种错误。
2、估计是在Bin里面还有一个老版本的DLL,而新版的DLL名字换掉了,新的覆盖不掉老的,并存在BIN里时,有可能会发生这种情况. 解决方案:把BIN里的手动删掉,C:\WINDOWS\Microsoft.NET\Framework\版本号\Temporary A
阅读全文
posted @
2009-08-13 01:47 斯克迪亚 阅读(1211) |
评论 (5) 编辑
谨慎注意WebBrowser控件的DocumentCompleted事件
摘要:

WebBrowser控件的DocumentCompleted事件一般就被认定为是在页面完全加载完毕后产生,而注释中也是这么写的,但事实却并非如此。
首先它不一定会在完全加载完毕时才触发,有时就会在加载过程中就会触发。
其次按照“完全加载完毕后”来理解,会认为通常一次页面跳转只会引发一次该事件,事实也并非如此,某些页面加载时会引发十多次乃至更多。
...
阅读全文
posted @
2009-08-06 03:56 斯克迪亚 阅读(4372) |
评论 (15) 编辑
在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件
摘要:

这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser。
我在《WebBrowser控件使用技巧分享》一文中曾谈到过“我现在可以通过WebBrowser实现对各种Html元素的操控,唯独无法控制Html的上传控件”,出于安全原因,IE没有对上传控件提供操控支持,这使得我们没法像控制其他控件一样用简单的代码进行赋值。
比较实际的解决方案就是模拟操作了,下面我就将演示通过键盘、鼠标两种方式模拟点击“浏览”按钮,然后配合键盘模拟输入文件路径,并按回车键确认。
阅读全文
posted @
2009-08-06 00:52 斯克迪亚 阅读(4964) |
评论 (18) 编辑
通过HttpModule实现IP地址屏蔽功能
摘要:

此前本想在网上找找实现Asp.Net的IP地址屏蔽功能的文章来参考,但是一搜索“IP 屏蔽 asp.net”,出现的全都是对我此前写的《细说Asp.net的IP地址屏蔽功能设计》一文的无情转载,不仅不保留出处、作者,而且连标题都没一个与我原文相同的~~
这篇文章写的是程序设计部分,并没有编程实现屏蔽功能,搜索引擎上翻了几页也没找到个正经写这方面的文章,无奈只好自己来研究实现,并写下此文的续篇了,倒是没什么难度。
本文将介绍通过实现IHttpModule接口,进行判断和屏蔽IP地址的方法。
...
阅读全文
posted @
2009-07-31 02:35 斯克迪亚 阅读(5486) |
评论 (38) 编辑
免费的午餐——编程利用Google日历API发短信、Email
摘要:

Google日历是相当优秀的日程管理工具,可以方便的组织、分享各类日程,Google还提供了贴心而免费的手机短信、Email提示功能,真是非常的赞。
此外Google还公开了其API,使得我们可以通过各种语言编程访问。
我们要利用类库,及Google日历的免费短信、Email提醒功能,实现程序控制提醒。...
阅读全文
posted @
2009-07-23 02:30 斯克迪亚 阅读(18602) |
评论 (93) 编辑
ASP.Net中Ado.Net Entity Framework实际项目应用释疑
摘要:

关于Ado.Net Entity Framework 的理论、入门教学文章已不少了,但是很少有人讲到在ASP.Net项目中实际项目应用的问题,往往学的时候轻松搞定,一上手项目就一头雾水。
我在此将结合自己的经验,解答包括上述问题在内的一些在ASP.Net实际项目中容易产生的疑问。
阅读全文
posted @
2009-07-20 00:32 斯克迪亚 阅读(9731) |
评论 (62) 编辑
Google图表创建类 —— 高度封装!强力图表解决方案!
摘要:

Google图表API是一个免费的、非常强劲的图表生成工具,您可以仅凭一个Url地址,轻松生成一张具有专业水准的图表。
更为可贵的是,图表图形的计算和渲染完全由Google服务器处理,生成的图片也从Google服务器下载,你的服务器就可以大幅节约运算及网络流量资源。
故此,将Google图表API作为网站的图表解决方案,是一个绝佳的选择。...
阅读全文
posted @
2009-07-15 01:53 斯克迪亚 阅读(6402) |
评论 (73) 编辑
【附视频】万分诡异!——ListView胡乱执行Page.Validate()的BUG
摘要:

今天做网站时遇到了非常恶心的事: 页面上有两个用户控件,其中一个包含ListView,用于显示商品评论列表,另一个就是用于发表评论的提交信息界面。
用于显示评论列表的用户控件中的ListView支持编...
阅读全文
posted @
2009-06-29 00:05 斯克迪亚 阅读(2702) |
评论 (24) 编辑
ASP.Net控件模板中根据绑定对象的属性控制元素隐现技巧
摘要:

本文介绍了三种通过绑定对象控制元素隐现的方法:
直接在内嵌代码中判断和输出文本
在服务器控件的Visible属性中嵌入代码进行判断
使用PlaceHolder控件作为容器装载多个元素,在其Visible属性中内嵌代码控制内部多个元素的隐现
阅读全文
posted @
2009-06-12 23:09 斯克迪亚 阅读(2806) |
评论 (12) 编辑
防止自建控件与页面间重复引入客户端js脚本的方法
摘要:

我们在创建自定义的服务器端控件或是用户控件时,经常需要用到一些客户端js脚本,通常将其作为资源嵌入,并在页面后台代码中添加引用,但是如若用到一些通用的js库(比如JQuery)时,就免不了产生一个疑问...
阅读全文
posted @
2009-06-10 00:54 斯克迪亚 阅读(3119) |
评论 (12) 编辑
蹩脚的EntityDataSource和FormView控件(解决插入数据时报空引用异常的BUG)
摘要:

这两天做网站,某页中使用了EntityDataSource结合FormView插入数据,先是自动生成了这么个基本的表单
然后运行,插入测试数据(咋变这色了?? )
结果回回报错!
始终找不出错误位置,弄得我直想挠墙。
...
阅读全文
posted @
2009-06-04 04:18 斯克迪亚 阅读(1572) |
评论 (5) 编辑
关系数据库一对一关系模式应用示例
摘要: 关系数据库中,一对多关系使用的非常普遍,多对多关系也时有用到,而一对一关系用的非常之少,本篇将展示一个一对一关系的使用示例。 首先我们有这样一个数据库: 这是一个简单的商业数据库,现在有一个需求:要求...
阅读全文
posted @
2009-05-28 02:34 斯克迪亚 阅读(2143) |
评论 (6) 编辑
让PasswordRecovery控件使用Email地址找回密码
摘要: 我曾介绍过以Email地址登录基于Membership管理的网站的方法,并指出这是一种更为安全的做法,用户的Email通常不会暴露在网站中,而不知道Email也就无从破解实现登录。 但是在密码找回时,...
阅读全文
posted @
2009-05-27 07:54 斯克迪亚 阅读(964) |
评论 (0) 编辑
分离到底!用XML+XSLT+CSS+JQuery+WebService组建Asp.Net网站
摘要:

早在Web标准化风潮到来之前,我就考虑过XML+XSLT建站了,我以为这是一种非常优雅、高效、低耦的方案,必将大行其道。
然而时至今日,使用这种方案建站的人依然寥寥无几,大家还都在抱着Web标准化不撒手,其实Web标准化只是将表现(Css)分离了出来,而数据和结构仍然混杂在一起,它绝对不是我们最终的归宿,它只是一个过渡品。
XHtml标准的建立初衷,其实也就是为了向XML过渡的,XML+XSLT+CSS才真正做到数据、结构、表现的完美分离,才是我们的终极目标。
诚然,XML+XSLT确实有其技术难度,我想这是它难于普及的最大障碍所在,但我觉得随着时间的推移、观念的更新、工具的发展,这仍旧是我们必会到达的一站。
阅读全文
posted @
2009-05-21 01:57 斯克迪亚 阅读(7842) |
评论 (64) 编辑
发送内嵌图片邮件的正确方法
摘要:

很多企业发出的邮件都是图文并茂的,其中有部分是在邮件中引用网上的图片网址,更专业些的方法是直接在邮件中通过内联附件内嵌图片,这个功能可以由一些邮件客户端程序实现,那么我们怎么在.Net中实现这一功能呢?
搜索了一下,找到了一位台湾程序员分享的方法,但这个方法经我验证是错误的,其他就没找到什么有用的资料了。
经过尝试,我找到了正确的方法,而且非常简单。
阅读全文
posted @
2009-05-11 03:47 斯克迪亚 阅读(4901) |
评论 (17) 编辑
CheckedListBox扩展方法代码
摘要: 该扩展提供了控制、加载、导出CheckedListBox选定状态的一些实用方法。
阅读全文
posted @
2009-05-05 17:36 斯克迪亚 阅读(905) |
评论 (2) 编辑
WebBrowser控件使用技巧分享
摘要:

在发布“淘宝登货员”时发现不少朋友对WebBrowser控件比较感兴趣,故在此分享一下使用心得。
首先分享一个WebBrowser的扩展类(此类所需的dll将在文章末尾提供下载),大家最好都使用这个类来替代.Net框架中的WebBrowser类,它提供了两个扩展功能...
阅读全文
posted @
2009-04-23 00:16 斯克迪亚 阅读(15597) |
评论 (41) 编辑
适用于WinForm的一个定时器类
摘要: 尽管.Net已经提供了3个Timer,我仍然要自己利用BackgroundWorker组件封装这么一个定时器来使用。
主要原因是System.Windows.Forms以及System.Threading.Timer的Timer同时运行多个的时候会产生令人发狂的错乱,停止其中一个Timer的时候,可能会引发其他Timer注册的事件,对此类灵异事件,查遍互联网后只在MSDN发现了这么一段说明:
由于所有 Timer 组件都在主应用程序线程上操作,所以在 Windows 窗体应用程序中的任意 Timer 上调用 Stop 都可以导致来自应用程序中其他 Timer 组件的消息被立即处理。如果有两个 Timer 组件,分别设置为 700 毫秒和 500 毫秒,并且从第一个 Timer 调用 Stop,则应用程序可能首先接收第二个组件的事件回调。如果这证明有问题,请考虑转为使用 System.Threading 命名空间中的 Timer 类。
而System.Threading.Timer的Timer又让我感到非常晦涩难用,所以就造了一个山寨版的定
阅读全文
posted @
2009-04-12 21:38 斯克迪亚 阅读(1590) |
评论 (2) 编辑
淘宝登货员 1.031
摘要:

新功能加入:
此次更新加入了商品发布时间设定功能,可以将商品随机安排在指定天数内的指定时段中发布,这样即使在半夜录入商品,也能等到流量高峰时段发布了。
此功能的原理是根据用户的设定,程序随机生成一个符合用户要求的发布时间,提交到商品信息中。
错误修正:
填写按钮在填写操作执行期间会变为不可用状态,防止连续点击引发线程异常。
阅读全文
posted @
2009-04-02 05:26 斯克迪亚 阅读(1059) |
评论 (28) 编辑
淘宝登货员1.02(重要升级)
摘要:

此次升级主要为了解决上图所示的“品牌”设置问题,此前的版本通过自定义项设置该项是无效的,本次的改动如下:
* 更改了自定义项中设定的下拉列表的触发方式
* 为自定义项增加了延时执行的选项
阅读全文
posted @
2009-04-01 07:27 斯克迪亚 阅读(678) |
评论 (7) 编辑
淘宝助手 替代品!【淘宝登货员】研发中
摘要:

我是珠宝商,也是程序员,很稀有的搭配吧,嘿嘿
N年前我注册了帐号,就拿淘宝助手发商品,结果使用起来非常痛苦,放弃~。
前几天重归淘宝,再用淘宝助手发布商品,用了一天还是感觉太难用了,跟几年前没什么变化嘛~,还经常出BUG,实在无法忍受—_—~~
然后就决定自己做一款软件来实现商品登录,提高效率,于是就有了“淘宝登货员”。
与淘宝助手的定位不同,淘宝登货员不是进行批量管理的软件,而是只专注于登货部分,尽心竭力地提高商家登录货品的速度。
阅读全文
posted @
2009-03-25 00:33 斯克迪亚 阅读(1298) |
评论 (14) 编辑
改进的脏话审查方案
摘要:

我经常光顾cnbeta,那里的评论很精辟,有时我也会忍不住评上两句,但近来突然发现发布评论都必须经过审核才会显示了,这让我感到非常扫兴。由此我又想起了此前我曾讨论过的“非法内容核查方法”,我想这种人机结合的审核方式应该会比较适合现在的cnbeta吧。
而现在我已经对此方案有了更深、更好的思路了,想在此分享出来,和大家探讨一下,我将在此逐步解析整个审查的流程。
这个经过改进的方案兼顾了性能与灵活性:只进行一次全文扫描;使用正则表达式进行语段匹配。预计稍加优化,并加入缓存机制的话,常规文章的审核耗时不会超过半秒。
阅读全文
posted @
2009-03-16 04:29 斯克迪亚 阅读(3797) |
评论 (27) 编辑
用图片做网站输入验证的构想
摘要:

我们现在使用的验证手段都是以验证码为主,让用户根据图片输入验证字符,这种方法的安全度尚可,但会给用户带来一些不便和困扰,比如这个雅虎的验证码安全度很高,机器和人都无法正确识别了。
其实要让人看得懂、机器看得晕,只要拿出我们人类的强项就可以了啊——影像识别,试想用图片来做验证是不是会很好呢?
用户进行验证时的操作很简单,只需点选图像所属的类别就可以了,还可以顺道欣赏一下图片,很是惬意;而机器急大了头也很难理解图片的内容吧?...
阅读全文
posted @
2009-02-02 02:19 斯克迪亚 阅读(3632) |
评论 (41) 编辑
从今开始,让网站用Email地址登录
摘要:

现今,很多Web2.0网站都使用Email地址作为登录用户名,其有如下优点:
1. 不易重复。用户名经常会重复,导致用户不得不在多个网站之间使用多种不同的用户名,不易记忆和管理;而Email地址具有唯一性。
2. 易于记忆。用户常用的Email地址一般不会超过三个,所以即使忘记了是哪一个,也能很快试出来。
3. 不易被破解。用户名在网站中通常都是对所有人可见的,这就会导致一些别有用心的人关注某个特定用户,骗取或暴力破解其账户;而Email地址在网站中通常都是保密的,在不知道某人的Email地址之前,破解就无从谈起,极大地提高了账户安全性。
...
阅读全文
posted @
2008-12-02 19:26 斯克迪亚 阅读(3609) |
评论 (25) 编辑
学柯南,用电脑拨电话!
摘要:

在柯南的剧场版《战栗的乐谱》之中,柯南通过唱出特定频率的声音来模拟电话的按键音,从而由远处拨通了报警电话。我看字幕上写着“切实可行”,便对此产生了兴趣。
我想我们完全可以用编程来实现一个电脑拨号键盘,通过按键从音箱中发出对应的电话按键音,传入电话听筒实现拨号。
也许这样只会对电话键盘进水的人有用吧(比如我-_-#),但是进一步,我们还可以实现通过电脑管理一个常用电话薄,然后通过便捷的关键字过滤查找电话(比如输入“王”、“微软”、“136”等字符串,快速过滤掉不含关键字的联系人),并呼出,相信没有哪个电话机会比电脑的管理功能更强大吧。
还可以为OutLook写一个插件,来实现对联系人的拨叫。
阅读全文
posted @
2008-11-17 19:19 斯克迪亚 阅读(9286) |
评论 (65) 编辑
细说Asp.net的IP地址屏蔽功能设计
摘要:

出于安全考虑,几乎每个动态网站都具备IP地址屏蔽功能,而网上流传的很多关于该功能的教程大都采用字符串保存和验证IP地址,我认为这是不太科学的,我试图找到最佳的设计方案。
“IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。”
由此我们了解到,IP地址实际上是一个32位正整数,在C#中可以使用uint类型来表示,但SQLServer数据库里好像没有对应的类型;转而使用数据库支持的int类型的话,则会出现溢出的情况;因此我们做出妥协:使用long(bigint)类型。
那么如何将IP地址转为整数呢?我们看到IPAddress类中有一个“[否决的]”实例属性Address,这个属性的确可以返回一个long值,但是测试一下,得到的数据确实这样的:
...
阅读全文
posted @
2008-11-05 05:58 斯克迪亚 阅读(5691) |
评论 (27) 编辑
较为周全的Asp.net提交验证方案(Session版)
摘要:

此前我介绍了使用数据库实现的提交验证方案,一些朋友怀疑其效率不佳,认为Session是更好的方案。
的确使用Session也不会消耗太多内存,而且如今内存白菜价,最不济就随手买个2G的插上也就够了,所以我将在此写下Session版的实现提要,其余细节参考前篇。
实现方案简述:
在Session中存储一个哈希表用以记录该用户的每一条验证信息,哈希表的键为验证信息的过期时间,值为验证码的明文。
过期时间使用ViewState存储,以发给客户端,并在提交时获取,以读取对应的验证码明文。
...
阅读全文
posted @
2008-10-21 17:03 斯克迪亚 阅读(4265) |
评论 (34) 编辑
较为周全的Asp.net提交验证方案 (下)
摘要:

下面要对这个生成的“提交验证”类进行功能扩展,通过.Net的“部分类”或“扩展方法”技术都可以轻松实现,这里采用的是“部分类”技术:
...
引用生成的ADO.NET Entity Framework数据模型的命名空间,且声明为部分类。
书写静态构造函数及一个静态属性:
...
阅读全文
posted @
2008-10-14 03:00 斯克迪亚 阅读(2528) |
评论 (16) 编辑
较为周全的Asp.net提交验证方案 (上)
摘要:

以前在学习Asp.net时备受困扰的就是提交验证这块,网上流行的关于图片验证的教程大都存在很多问题,比如:
验证码存储在页面代码或Cookies里,暴露给客户端;
通过Session存储的验证码,虽然解决了安全问题,但一个用户只使用一个变量存储验证码,假如用户同时打开一个以上的页面,分别提交的话,就无法正常使用了;
验证码不会过期,这会留下隐患,使暴力破解变得可行(当然也可以通过刷新间隔、提交间隔、黑名单等手段加以控制);
此外还有伴随着提交产生的另一个问题——重复提交。
为解决上述问题,我曾走过不少弯路,后来总结出了一个方案可以很好的解决这些问题,本文将结合ADO.NET Entity Framework技术来介绍此方案。
阅读全文
posted @
2008-10-13 03:02 斯克迪亚 阅读(2426) |
评论 (8) 编辑
在Web.Config中指定页面的基类
摘要:

为网站设置统一的页面基类绝对是一个好习惯,可以在基类中完成很多统一的读写处理和行为封装,比如实现防刷新机制、IP屏蔽等功能。
在Web.Config文件中,可以通过指定system.web中的pages节点的pageBaseType属性指定页面的基类:
...
但这个属性的概念比较模糊,我曾以为此属性会使新建页面的模板发生变化,使它们直接继承你所设定的基类,但不是这样的。
首先此属性会使所有不包含后台代码的独立Aspx页面自动继承于此基类,如这样声明的页面:
...
阅读全文
posted @
2008-10-11 23:43 斯克迪亚 阅读(2939) |
评论 (19) 编辑
一处 ADO.NET Entity Framework 的逻辑BUG
摘要:

这几天开始接触ADO.NET Entity Framework,突然发现一处奇怪的BUG。
...
...
也就是说先前在属性面板设置的命名空间根本就是无效的,它只会以目录名作为命名空间名称,我认为这不合乎逻辑。
而假如直接将模型放入App_Code目录下,命名空间属性就可以正常生效。
阅读全文
posted @
2008-10-11 14:50 斯克迪亚 阅读(613) |
评论 (4) 编辑
在后台代码中引入XAML的方法
摘要:

本文将介绍三种方法用于在后台代码中动态加载XAML,其中有两种方法是加载已存在的XAML文件,一种方法是将包含XAML代码的字符串转换为WPF的对象。
这些是我在编写RegeX时获得的经验,它们将会给WPF程序带来更多的灵活性。
动态加载XAML文件技术非常适合用于资源载入,以此来实现语言切换、主题变换等功能。
动态转换XAML字符串为WPF对象技术可为程序提供更为灵活的对象生成方式,这在一些复杂的情况下尤为实用。
阅读全文
posted @
2008-09-30 05:04 斯克迪亚 阅读(2430) |
评论 (6) 编辑
[重要更新] RegeX版本更新至2.1.1.5 增加新功能
摘要:

加入了匹配内容提示功能,可在鼠标悬停时显示该匹配项内的各捕获组信息(检索、替换时均有效)
加入了获取程序更新信息的功能,可以在关于窗口中了解到软件是否有更新或相关信息
优化了程序代码
改变了界面结构,将所有处理结果统一置于“输出的文本”一栏中
改变了部分配置文件结构(首次载入旧配置文件时,“输入文本”会显示乱码,替换为其他内容后将不会再出现此问题)
...
阅读全文
posted @
2008-09-25 00:27 斯克迪亚 阅读(2170) |
评论 (8) 编辑
RegeX版本更新至2.0.0.4 加入英文语言包
摘要:

增加了英文语言包
改进了语言包读取机制,修正语言扩展的BUG
改进语言包结构,取消了index.xaml文件
非常感谢恩电提供了英文翻译,并指出了语言扩展时的BUG:)
阅读全文
posted @
2008-09-22 20:05 斯克迪亚 阅读(750) |
评论 (2) 编辑
RegeX的早期版本
摘要:

应一些朋友的要求,放出RegeX的前身SearchRex,基于.Net 2.0的,不喜欢使用高版本.Net的人士可以使用:)
阅读全文
posted @
2008-09-22 18:26 斯克迪亚 阅读(1194) |
评论 (0) 编辑
RegeX —— 可视化正则表达式替换器
摘要:

RegeX是一款正则表达式辅助程序,它通过高亮匹配及替换内容使整个流程可视化,帮助用户更好地理解和使用正则表达式这一强力工具。
RegeX定位为免费软件,任何人都可无限制的使用它。
它的前身叫做SearchRex,此前我曾在一个小圈子里推广过它,很受好评。
我自己就是它最最忠实的铁杆用户:它帮我逐步学习和掌握了正则表达式;它帮我完成了很多文字处理工作;每次关于正则表达式编程的测试工作也都是依靠它来完成的。
阅读全文
posted @
2008-09-22 04:54 斯克迪亚 阅读(10278) |
评论 (90) 编辑
RegeX使用教程
摘要:

作为本文的读者,你最好具有一点正则表达式的知识,我将通过一个简单的正则表达式应用范例,向你展示RegeX的用途:
网页标准化已经不是什么新鲜事了,XHTML允许程序像访问XML一样访问其内容,这很激动人心。
不幸的是,网上仍然大量充斥着不遵循XHTML标准的网页,这使得上述优势大打折扣,好在我们可以在读取前尝试对网页进行一些修正,今天我们的范例就是修正工作中的一项——增加双引号。
阅读全文
posted @
2008-09-22 04:17 斯克迪亚 阅读(3895) |
评论 (10) 编辑
WPF新作—RegeX发布预告
摘要:

这两天都在忙乎这个呢,这是一个正则表达式的替换器,是我此前的一个作品的升级版,使用WPF技术重新制作。
话说WPF的RichTextBox还真是很复杂,让我头痛了好久,中间有一次还打算放弃了,后来又心血来潮重新做了起来~~
预计近几天内就会发布,准备定位为免费软件,届时送给大家用:)
阅读全文
posted @
2008-09-20 06:11 斯克迪亚 阅读(1239) |
评论 (6) 编辑
用VisualBrush定制复杂的按钮样式
摘要:

VisualBrush是一种比较特殊的笔刷,它的功能仍然是用来给元素填充图案,但它的内容却可以是各种控件。
你可以将其理解为一个普通的容器,但在其内部的所有控件都会失去交互能力,而只保留显示能力。
你可以通过本例学习到关于VisualBrush的使用方法,以及复杂样式的定制技巧。
首先来看一下我们将要实现的效果的4倍放大图:
...
阅读全文
posted @
2008-09-18 04:54 斯克迪亚 阅读(3813) |
评论 (13) 编辑
对《网站非法内容监听系统的构想》的回复——我谈非法内容核查方法
摘要:

刚才看了谢慧琦的《网站非法内容监听系统的构想》一文,觉得其中所述的想法与我之前的设想非常相像,所以我忍不住也想说几句了,嘿嘿:
我原先的设想就是在用户提交时,对提交内容进行危险程度核查,也是予以评分。
无危险的内容直接发布;
有一定危险的内容也会发布,但在发布的同时会在后台提请管理员进行人工审查;
高危险度的内容延迟发布并通知管理员。
阅读全文
posted @
2008-09-14 02:02 斯克迪亚 阅读(2554) |
评论 (18) 编辑
意外地解决了一个WPF布局问题
摘要:

今天做了一个小测试,意外地将之前的一个困扰解决了,原问题见《WPF疑难杂症会诊》中的“怎么才能禁止内容撑大容器?”
以前我是在外侧嵌套Canvas容器来解决的,这样实际上就是强制舍去了溢出部分,如果想实现多余的文字转变为省略号就办不到了,而且渐变的结束点也是随内容扩展到容器外面了。
现在改良为下面这段代码,就达到了很好的效果:
...
阅读全文
posted @
2008-09-13 23:16 斯克迪亚 阅读(2646) |
评论 (4) 编辑
WPF与混淆器
摘要:

时至今日,混淆依然是.Net程序的一道重要保护手段,而混淆器对WPF应用程序的支持是怎样的呢?我们今天就通过实例讲解一下。
首先建立如下图所示的简单的用户界面:
...
在界面代码中设置一些绑定属性:
...
在后台代码中首先定义一个种族枚举,以便于在列表中使用:
...
阅读全文
posted @
2008-09-10 01:49 斯克迪亚 阅读(2790) |
评论 (9) 编辑
WPF实现无窗体鼠标跟随
摘要:

上次的弹力模拟动画实现后,我觉得可以把这个弄得更好玩一些,我们可以让小球实时跟随着鼠标,并且还可以让窗口完全消失,让小球在桌面上飞来飞去。
这只需要一些简单的修改就可以完成了:
首先要去掉原有的鼠标点击事件处理,它们现在没用了。
在引用中添加对System.Drawing及System.Windows.Forms的引用:
...
阅读全文
posted @
2008-09-08 03:55 斯克迪亚 阅读(3721) |
评论 (14) 编辑
WPF弹性模拟动画
摘要:

我们此次将要制作模拟物理中的弹性现象的交互动画,我们让一个小球向鼠标点击位置移动,这个移动的轨迹不是简单的位移,而是根据胡克定律计算得出的。
胡克定律:F=-kd
F代表弹性力的大小
d是拉伸的位移
k为弹性系数
在我们的动画中还将加入摩擦力,否则物体就如在真空中运动,永远不会停止。
阅读全文
posted @
2008-09-05 01:42 斯克迪亚 阅读(3525) |
评论 (18) 编辑
[转自己的文章算不算转] 由《函数式编程另类指南》联想到的哲学思想
摘要: 这是当年我看Lamada表达式相关文章时看到的资料,以及当时的感悟,现在给转到这边来自己看。
阅读全文
posted @
2008-09-02 17:30 斯克迪亚 阅读(368) |
评论 (2) 编辑
WPF动态改变主题颜色
摘要:

国内的WPF技术先行者周银辉曾介绍过如何动态改变应用程序的主题样式,今天我们来介绍一种轻量级的改变界面风格的方式——动态改变主题色。
程序允许用户根据自己的喜好来对界面进行配色,这种技术在很多软件中都有应用,比如这款名为AirPlay的音乐播放器软件:
...
下面我们就来自己动手实现这种技术:
首先在App.xaml文件中定义一个键值为“color”的单色笔刷,这个笔刷就是可以被用户改变的动态资源:
...
阅读全文
posted @
2008-09-02 13:15 斯克迪亚 阅读(4303) |
评论 (19) 编辑
WPF相关文章索引 (持续更新中)
摘要:

应一些朋友的要求,整理出自己所写的WPF相关文章索引,回首一看,也真写了不少了呵。
这个博客的建立初衷就是为了分享和总结我在WPF方面的所学,此后还会继续保持更新的。
目前收录的文章有:
WPF界面设计技巧系列(11篇)
用XAML做网页系列(7篇)
其他零散文章(8篇)
阅读全文
posted @
2008-08-30 10:16 斯克迪亚 阅读(4490) |
评论 (10) 编辑
用XAML做网页!!—终结篇
摘要:

迄今为止的设计都很顺利,但这次就不得不接触我前面所说的非常糟糕的流文档了。
可以看到,一帆风顺的设计伴随着一个糟糕的结局结束了,流文档让我大失所望,液态布局存在巨大缺陷。
流文档如果不能很好的重用,那么它的意义非常渺小。
液态布局中容器和内容的尺寸冲突很可能是设计上的BUG,它们本应该通过公开的依赖属性来完美协调,但是它们根本没有那么做。
我希望这些只是因为我的用法不对而造成的结果,期待能有高手指出优雅的解决方式,如果无人能予以解决,那只能寄希望于微软完善了。
阅读全文
posted @
2008-08-30 09:09 斯克迪亚 阅读(2187) |
评论 (15) 编辑
使用语音即时校对输入内容
摘要:

此文将介绍利用微软TTS引擎,在录入数据时进行即时语音校对的示例。
这是一项非常简单且非常实用的技术,此功能在行业软件中使用的话,将会使用户的录入准确率大幅提高,还可减少甚至取消后期核对工作。
你需要使用以下类库来操作TTS:
...
在文章末尾处提供的源代码中将包含此类库。
现在开始编写这个示例程序:
新建一个WinForm项目,引入上述dll,在窗体后台代码中添加对其命名空间的引用:
...
阅读全文
posted @
2008-08-28 11:35 斯克迪亚 阅读(4532) |
评论 (49) 编辑
令人机双双崩溃的VS2008 SP1!WPF用户请勿更新!
摘要:

我认为有必要给这个SP1补丁以最差评价,这玩意真是糟透了,除了低级的不能再低级的中文提示变英文的BUG外,我还遇到了很恶心的WPF方面的两个BUG:
...
这两个BUG是我在两台机器上都出现的,一个台式机使用Vista U版,一个笔记本使用Vista B版。
奉劝各位WPF相关使用者短期内放弃更新的念头为上。
我很讶异、很失望,作为一个一流的大公司,怎么可以犯下如此不负责任的错误?这是开发人员根本就没有经过什么测试就直接扔出来的吧?
希望微软以后的更新严谨一些,不要给用户制造这么多噩梦!
阅读全文
posted @
2008-08-27 09:23 斯克迪亚 阅读(8427) |
评论 (103) 编辑
用XAML做网页!!—边栏与页脚
摘要:

此次我们来设计边栏和页脚,首先从页脚开始,其代码很简单:
...
效果如下:
...
这里没什么可讲的,接下来转向内容区域。
可能很多人在上一讲中已经发现我们设计的标签的底端和页面内容区域没有很好的接合,存在色差:
...
阅读全文
posted @
2008-08-26 13:24 斯克迪亚 阅读(2337) |
评论 (15) 编辑
用XAML做网页!!—导航栏
摘要:

这次要完成的是导航栏,这是页面中比较复杂的区域。
先在 Microsoft Expression Design 中绘制导航栏的背景图案:
...
导出为barback.xaml,增加其填充规则:
...
完成后的代码如下:
...
阅读全文
posted @
2008-08-25 04:12 斯克迪亚 阅读(3064) |
评论 (25) 编辑
用XAML做网页!!—广告展示区
摘要:

此次我们来进行广告展示区块的制作。
首先在Show区块中去掉原来设置的背景色,加入新的渐变背景设定:
...
可以看到,它在最底部是微微泛红的:
...
这样是模拟了橙色导航栏映射到这里的漫反射效果,增加了材质的金属质感。
...
阅读全文
posted @
2008-08-23 06:31 斯克迪亚 阅读(2447) |
评论 (10) 编辑
用XAML做网页!!—页头
摘要:

接续上次进度,我们此次来制作页头。
首先要实现两侧边缘的美化,如下图所示:
...
在边缘处有一层朦胧的亮度反光效果,这也是通过简单的渐变实现的,而且我们在后面的每个区块中都要实现类似的效果,所以现在就将所需的资源一起创建了。
在Grid中创建一个资源标记,并设置4个笔刷资源:
...
LightLeft和LightRight是我们一会用到的,剩下两个会在其它区块中使用。
...
阅读全文
posted @
2008-08-21 18:50 斯克迪亚 阅读(2427) |
评论 (6) 编辑
用XAML做网页!!—框架
摘要:

上一篇中我进行了一下效果展示和概述,此篇开始将重现我此次尝试的步骤,我想大家通过阅读这些步骤,可以了解到XAML网页排版的方法。
下面就开始编写XAML,首先来定义一下页面的属性:
......
WindowTitle就是页面标题。
SnapsToDevicePixels属性很重要,它会使我们的图像自动进行像素对齐,从而去除模糊的边缘,这可以使我们的网页看起来更像传统网页。
接下来这一点很有趣,我们要在页面中放置ScrollViewer,否则我们的网页超出屏幕的时候不会显示滚动条,连这个都要我们自助使用了:
.....
阅读全文
posted @
2008-08-19 21:15 斯克迪亚 阅读(3119) |
评论 (16) 编辑
WPF疑难杂症会诊
摘要:

为什么图片像素是模糊的?Gird布局无法自适应内容扩展了!怎么才能禁止内容撑大容器?
怎么弄出CheckListBox来?怎么让多选列表中所有项的选择状态反转?如何在多种样式之间共享相同的部分?
在此我列出了一些我在编写MailMail期间遇到的一些问题和解决办法。
算是抛砖引玉,其中有些是使用偏方解决的,期待高手能提供出最佳的解决方法。
阅读全文
posted @
2008-08-13 19:13 斯克迪亚 阅读(3207) |
评论 (6) 编辑
WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心
摘要:

流文档是WPF中的一种独特的文档承载格式,它的书写和呈现方式都很像HTML,它也几乎具备了HTML的绝大多数优势,并提供了更强的编程支持及对WPF其他元素的兼容。
或许有人会问,这么一个和HTML极度相似的东西有什么意义?
首先他和HTML定位不一样,至少是和HTML现在的定位不一样。我们拿到一个流文档,很明确的知道它就是一份文档;但拿到一个HTML,即使它格式再规范,我们也不确定它是什么东西,它里面可能掺杂了很多页头、页脚、导航链接、菜单、布局块、侧边栏、脚本等等,它就是个大杂烩,我们的程序并不喜欢这种不确定的东西。
...
阅读全文
posted @
2008-08-12 00:48 斯克迪亚 阅读(4344) |
评论 (14) 编辑
WPF界面设计技巧(10)-样式的继承
摘要:

WPF的样式的继承属性极少被文章提及,以至于我在编写MailMail期间为此踌躇数日,最后终于在E文版的MS社区得到指点才得以解惑。
现将其分享出来,这是一个非常有用的特性,这是所有教程在讲Style时就该顺带讲出来的,我希望更多人看到,以少走弯路。
WPF的样式需要显示声明继承,即使用Style的BasedOn属性。
通过继承基样式及充分地重用通用资源(如色彩、笔刷),我们不难实现界面的色彩风格切换功能。
为一套样式定义多种风格供选,或是让用户自由定制他们喜欢的色彩主题,将是一项激动人心的功能。
阅读全文
posted @
2008-08-09 17:38 斯克迪亚 阅读(3728) |
评论 (12) 编辑
WPF界面设计技巧(9)—使用UI自动化布局
摘要:

最近一直没时间更新这系列文章,因为我一直在埋头编写我的第一个WPF应用程序:MailMail
今天开始编写附属的加密/解密工具,对UI自动化布局有些心得,就此分享出来。
...
相比通过窗体设计器“画”界面来说,UI自动化需要更多的知识与经验、更复杂的设计步骤以及更少的可视化编辑器支持,有时可视化的编辑行为甚至会破坏你已有的UI自动化布局,所以要谨慎操作。
...
...
阅读全文
posted @
2008-08-02 03:04 斯克迪亚 阅读(6127) |
评论 (19) 编辑
一起来乐邮邮——妙趣小软件:MailMail发布预告
摘要:

最近一直在搞的东西就是它了,这是我用WPF制作的第一个应用,现在基本成型了,再过些日子就该出锅啦,是时候出来秀秀了。
我目前的想法是定位为共享软件,在发布前几天我会为博客园用户免费发放注册码哦,嘿嘿。
MailMail的用途是通过邮箱进行日常文件传递、分发或备份,随手拖入要传送的文件,点击“发送”就OK了。
每天工作后提交文档?没问题!
保持给每个同事分发最新的客户资料?没问题!
随时随手备份程序代码?没问题!
MailMail会让你乐此不疲:)
阅读全文
posted @
2008-07-26 02:48 斯克迪亚 阅读(2278) |
评论 (26) 编辑
WPF界面设计技巧(8)—自制山寨版CheckListBox
摘要:
近年来IT市场山寨横行啊,我们今天也来发扬一下山寨精神,搞个自制的CheckListBox出来。
我也不知道为什么,WPF里没有提供 CheckListBox 控件,但凭借WPF强大的外观定制能力,我们可以轻松的创制一个自己的 CheckListBox 。
CheckListBox 的基本功能其实和 ListBox 没有太大出入,只要将普通的ListBox 的选择模式设为多选,它就能基本实现 CheckListBox 的功用了,只不过从用户角度来说,它的使用方式不如 CheckListBox 看起来那么明确而已。
我们接下来就仅仅采用外观修改的方法,将 ListBox 与 CheckBox 拼插,打造出无敌山寨版 CheckListBox 。
阅读全文
posted @
2008-07-23 21:07 斯克迪亚 阅读(4805) |
评论 (20) 编辑
WPF界面设计技巧(7)—模拟电梯升降的缓动动画
摘要:
如同Flash一样,WPF的亮点之一也在于其擅于表现平滑的动画效果,但以移动动画来说,仅凭简单的起始位置、目标位置,所产生的动画仍会非常生硬,这种动画忽略了移动开始时的加速过程与移动结束时的减速过程。
WPF在关键帧动画中提供了样条内插(Spline)型的关键帧,用以控制变化的速率曲线,但这东西实在有些复杂,且不够形象化,我研究很久也没明白如何实现“缓入——缓出”的效果,随后我从一本经典牛X却鲜有人知的过时的FlashMX教程中提取了一个缓动函数,我们将用这个函数来较真实地模拟电梯的升降行为。
阅读全文
posted @
2008-07-22 16:41 斯克迪亚 阅读(4360) |
评论 (21) 编辑
WPF界面设计技巧(6)—玩玩数字墨水手绘涂鸦
摘要:
想让你的程序支持鼠标及手写笔涂鸦吗?只要敲入“<InkCanvas/>”这几个字符,你就会领悟什么叫“很好很强大”,今天我们来做一个手写板的演示,你可把它当作屏幕便笺使用。
首先要用 Microsoft Expression Design 2 画一幅英俊的界面背景,这里我们剽窃索尼 VAIO CR 笔记本的设计,做出了一个油光锃亮的面板
阅读全文
posted @
2008-07-19 01:20 斯克迪亚 阅读(4103) |
评论 (6) 编辑
WPF界面设计技巧(5)—自定义列表项呈现内容
摘要:
接续上次的程序,稍微改动一下原有样式,并添加一个数据模板,我们就可以达成下面这样的显示功能:
鼠标悬停于文件列表项上,会在工具提示中显示图像缩略图及文件名、文件大小信息。
选中一个列表项,该列表项会扩大,并动态显示出一个小缩略图及文件的所在路径。
阅读全文
posted @
2008-07-17 12:25 斯克迪亚 阅读(3510) |
评论 (4) 编辑
WPF界面设计技巧(4)—自定义列表项样式
摘要:
有前面修改按钮样式的基础,我们可以尝试来定制一个即好看又好用的 ListBox ,今天先来讲“好看”部分。
这次教程主要是为了后面做铺垫,在下一篇教程中,我将会为大家讲述如何定制列表项的内容,比如让每个项目都可以显示图片、文件尺寸等信息,借助 WPF 的强大界面设计特性,我们不需开发自定义控件,只需用一些 XAML 代码,就可以为普通控件赋予丰富的呈现功能,敬请关注。
阅读全文
posted @
2008-07-16 23:02 斯克迪亚 阅读(4408) |
评论 (7) 编辑
WPF界面设计技巧(3)—实现不规则动画按钮
摘要:
发布了定义WPF按钮的教程后,有朋友问能否实现不规则形状的按钮,今天我们就来讲一下不规则按钮的制作。
不规则按钮的做法实际上和先前我们做不规则窗体的方法差不多,只是为按钮弄个不是那么方方正正的背景而已。
我们这次沿用自定义窗体时的设计图形,设计一个动态的不规则按钮,在这个示例中我们要将先前设计的整个图形作为按钮,并让外围的圆环始终围绕中心圆形旋转,在鼠标移入时,还要产生颜色变化及发光效果。
阅读全文
posted @
2008-07-15 23:17 斯克迪亚 阅读(6661) |
评论 (14) 编辑
WPF界面设计技巧(2)—自定义漂亮的按钮样式
摘要:
上次做了个很酷的不规则窗体,这次我们来弄点好看的按钮出来。
此次将采用纯代码来设计按钮样式,不需要 Microsoft Expression Design 辅助了。
首先打开 Microsoft Visual Studio 2008 ,新建一个WPF项目,在上面随便放几个按钮...
阅读全文
posted @
2008-07-15 01:56 斯克迪亚 阅读(10092) |
评论 (25) 编辑
WPF界面设计技巧(1)—不规则窗体图文指南
摘要:
初到园子,奉上第一篇入门级教程,请勿见笑。
以往WinForm编程中,实现不规则窗体是有一定难度的,更难的是不规则窗体的边缘抗锯齿及局部透明处理。而现在,WPF的出现使这个问题迎刃而解,使得我们可以轻松、灵活地美化用户界面。
...
阅读全文
posted @
2008-07-13 22:24 斯克迪亚 阅读(14038) |
评论 (41) 编辑