随笔分类 -  .NET感悟

摘要:我们在做web测试时,经常会使用WebBrowser来进行一些自动化的任务。而有些网页上面会用IFrame去嵌套别的页面,这些页面可能不是在相同域名下的,这时就会出现跨域问题,无法直接在WebBrowser中获取到IFrame中的元素。下面来做个试验,自己写个页面嵌套一个百度的首页,然后在我们自己的页面上输入要查询的词,最后在百度上自动完成搜索。<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head> <meta char 阅读全文
posted @ 2012-12-29 13:25 heqichang 阅读(12520) 评论(11) 推荐(5) 编辑
摘要:我简单的理解策略模式就是把行为(方法)单独的抽象出来,并采用组合(Has-a)的方式,来组合行为和实体的一种模式。再来个官方的解释:Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.网上也有很多资源介绍这个模式,我也不从头说起了。在.NET中委托给我们给我们提供了简单实现策略模式的方法,可以简单的把一个委托看成是一种策略方法,而且还能借 阅读全文
posted @ 2012-12-13 11:04 heqichang 阅读(2540) 评论(1) 推荐(1) 编辑
摘要:在这里记录一下之前使用Entity Framework(4.3.1版本)遇到的问题。更新没有设置主键的表在默认情况下,EF不能对一个没有主键的表进行更新、插入和删除的动作。用xml方式查看edmx文件,可以在SSDL中可以看到如下xml片断(我定义了一个没有主键的表tb_WithoutKey)。<EntitySet Name="tb_WithoutKey" EntityType="TransferModel.Store.tb_WithoutKey" store:Type="Tables" store:Schema="d 阅读全文
posted @ 2012-10-15 10:41 heqichang 阅读(12428) 评论(9) 推荐(2) 编辑
摘要:首先就从一个实验开始说起吧。在VS中建一个WinForm的工程,在界面上就放一个Label和一个Button,然后为按钮添加一个点击事件,修改代码如下:private void button1_Click(object sender, EventArgs e){ Thread thread = new Thread(() => { this.label1.Text = "Thread Test"; }); thread.Start();}然后我们按F5进入调试模式,点击Button之后,我们就会得到以下这个错误:但是如果我们按Ctrl+F5来运行这个程序,那么就... 阅读全文
posted @ 2012-09-07 10:45 heqichang 阅读(1036) 评论(1) 推荐(0) 编辑
摘要:下图是一个经典的观察者模式的结构。(图来源于wikipedia)观察者模式被定义为解决一个对象对多个对象的依赖问题。当一个对象的状态发生改变,它会自动通知其它依赖对象。关于该设计模式的介绍可以更多参考Terrylee的.NET设计模式(19):观察者模式(Observer Pattern)。这篇文章主要介绍在 .NET 4.0 怎么实现观察者模式。在.NET 4.0下位我们提供了两个观察者模式的底层接口:IObservable<T>和IObserver<T>。这两个接口定义如下:public interface IObservable<out T>{ IDi 阅读全文
posted @ 2012-08-24 10:51 heqichang 阅读(3615) 评论(1) 推荐(3) 编辑
摘要:直接看看源代码的错误地方吧。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace FileStreamTest{ class Program { static void Main(string[] args) { String file = @"D:\temp.txt"; FileStream fileStream; if (Fi... 阅读全文
posted @ 2012-08-02 23:24 heqichang 阅读(1507) 评论(0) 推荐(0) 编辑
摘要:今天在C#中使用SelectNodes的时候出现了一些怪现象,先从还原现场开始吧。首先创建一个简单的XML文件来试验,还是就保存为test.xml<?xml version="1.0" encoding="utf-8" ?> <root> <users job="salas"> <user> <name>Joe</name> <age>17</age> </user> <user> <name>Kate& 阅读全文
posted @ 2012-05-25 13:12 heqichang 阅读(20698) 评论(0) 推荐(5) 编辑
摘要:无聊时的想法,想用控制台来玩玩黑客帝国中那漂亮的数字雨特效,但是做得超简陋!呵呵!using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Timers;namespace ConsoleApplication70{ class Program { static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.DarkG... 阅读全文
posted @ 2011-11-18 21:32 heqichang 阅读(2846) 评论(0) 推荐(1) 编辑
摘要:首先建立数据库,数据关系图如下:本文要实现的效果就是在评论别人文章时,如果文章内容过长或者评论内容过长,实现的一个评论分段延迟加载的效果,即每页可显示30条评论,可每隔10条延迟加载一次以提高网页传输显示效率。我所实现的页面延迟的原理如下图,就是求出X的距离小于100时进行加载延迟的评论,然后又设置了一个标记位,用来判断延迟加载了多少次,每页仅能加载30条评论记录。然后再评论末端加载上页码实现无刷... 阅读全文
posted @ 2010-10-03 20:36 heqichang 阅读(7451) 评论(0) 推荐(4) 编辑
摘要:首先在数据库中就建三个字段的表用来存储用户名和评论信息,Id只是为了设置唯一标示,所以设置成整型自增字段就行了。再建一个HTML页面,只需简单的拉几个html控件出来摆着就行,注意在页面顶部有个<table>标签用来占位输出评论内容。Html页面代码就这样简单就行了:然后再页面刚加载的时候,需要从数据库中显示出已有的评论,所以建个后台一般处理程序,命名为:bodyload.ashx。这... 阅读全文
posted @ 2010-09-21 20:11 heqichang 阅读(12203) 评论(22) 推荐(4) 编辑
摘要:今天在VS2010中使用ListView控件的时候,遇到了这么一个问题:在ItemCreated事件中无法找到在ListView中的控件的ClientID,准确说是得到一个错误的ClientID引发事件的代码如下:结果得到的ClientID就是错误的,它会在前面加个ctrl3_,但真实的ClientID是ListView1_nameTextBox解决这个问题方案是可以在ItemDataBound事... 阅读全文
posted @ 2010-09-17 22:37 heqichang 阅读(1528) 评论(0) 推荐(1) 编辑
摘要:1.去除SQL Server数据库中DateTime类型的时分秒的方法:SELECT CONVERT(varchar(10), GETDATE(), 120)还有很多其它格式化时间的方法,在这里输出的时间就如:2010-08-112.DateDiff函数的使用计算时间之间的差值语法DATEDIFF ( datepart , startdate , enddate )参数datepart是规定了应... 阅读全文
posted @ 2010-08-11 19:50 heqichang 阅读(5843) 评论(0) 推荐(1) 编辑
摘要:注意事项:在前面的文章中将数据库中的表拖入项目中的数据集的设计视图时,VS会自动为我们对数据库做好连接,并且在程序配置文件中自动添加好了连接字符串,但采用这种方法连接上数据库后,在对数据库增加、删除、修改数据时会发现做过的修改会没有效果,具体原因参看下这里的文章:http://www.cnblogs.com/dajianshi/archive/2007/07/06/808495.html我继续接着上篇文章介绍强类型DataSet绑定到DataGridView控件中,并执行更新数据的操作。在项目中添加一个数据集文件后,重新生成一下,我们就可以看到一个DataSet组件出现在工具箱栏中,再向里面添 阅读全文
posted @ 2010-08-04 19:30 heqichang 阅读(1066) 评论(2) 推荐(0) 编辑
摘要:上一篇文章简单介绍了一下VS中的DataSet强类型怎么使用,今天继续说明怎么利用VS自动创建的强类型DataSet查询指定数据。之前继续照着上一篇文章的步骤重新建一个winform工程:简单的设计一下界面如下:我们要完成的功能就是在界面上第一个空格输入一个ID,在下面得到该ID人的信息。表结构如下:在里面输入一些信息:接着再按着上一篇文章所说的向项目中添加一个数据集,然后将表从数据库中拉入设计视... 阅读全文
posted @ 2010-08-03 19:20 heqichang 阅读(1310) 评论(0) 推荐(0) 编辑
摘要:关于弱类型 DataSet的缺点: 无论何时从 DataSet检索值都是以Object类型返回,需要对它进行类型转换; 给其它开发者使用 时无法知道哪些列可用; 运行时才能知道所 有列名,数据绑定麻烦。 因此,VS为我们提供强类型DataSet的自动生成功能。 下面简单的来使用一下。 首先,建一个控制台工程,然后再项目名那右键添加新项,选择一个基于服务的数据库,取名 test 。 在数据库中新 ... 阅读全文
posted @ 2010-08-02 19:44 heqichang 阅读(4592) 评论(3) 推荐(0) 编辑
摘要:今天做程序用到byte[],我用随机函数生成了有10个byte数值的数组,再把它用Encoding.Default.GetString()转成string,我发现再把这个string转成byte[]时会与之前的byte[]有出入,有些数字不同,还有可能会丢失数据,怪不得网上那么多用.net的加密程序中,中间的密文都用Convert.ToBase64String()把它转成Base64编码的格式,这... 阅读全文
posted @ 2009-05-13 20:58 heqichang 阅读(679) 评论(0) 推荐(0) 编辑