随笔分类 -  .NET

一些零散的东西
摘要:唔,本来也没打算写这工具,以往也会做一些MD5加密、HTML编码什么的,都去网上找个在线什么的,但是最近研究SMTP协议,内容是base64格式的,好像没找到在线工具帮我转,又不想另外写代码来看,看这尿性,以后还会经常用到此类东西,特别是在调试、取舍某一种编码的时候。于是,干脆写出来一个小工具,全英文(虽然就几句话,但这还是属于没事找事做),可以实现四类转换: 1、使用指定编码,文本 <——> Base64 String; 2、使用指定编码,对文本进行URL编码、URL反编码; 3、使用Unicode编码,对文本编码为“&#108;”这类格式的字符代码数据;反之对字符集数组 阅读全文
posted @ 2013-05-29 20:29 Lekko.Li 阅读(1361) 评论(10) 推荐(1) 编辑
摘要:一般来说linq在EF中满足了绝大部分的查询需求,而插入、删除则需要根据实体来操作,在一些情况下会造成一些麻烦。比如现在有这样的关系:它在数据库中生成的表: 那么在实体对象上下文如果想直接操作某些Product与Category的关联时将麻烦不少,因为不能在EF下直接操作ProductCategory中间表。那么这时直接执行SQL语句来添加、删除两者之间关系会好上不少。我便是这样写的: 1 /// <summary> 2 /// 添加产品到小类 3 /// </summary> 4 /// <param name="proI... 阅读全文
posted @ 2013-05-28 14:28 Lekko.Li 阅读(1957) 评论(2) 推荐(2) 编辑
摘要:前段时间写的博文“.NET4.5之初识async与await”有朋友反应说例子不够好,于是也在琢磨着能改善一下。好在最近在做个电子相册,用的背景歌曲是好几首歌,我真不想一点一点地往相册转录的视频里加字幕(有近半个小时的长度),于是想到用这些歌的lrc歌词文件制成一个srt字幕文件,就能直接用于视频播放了。这里正好有文件读写操作,可以使用.NET4.5的新型异步方式来写。 1、LRC格式 歌词文件的格式非常简单,给个示例:[ti:被遗忘的时光][ar:蔡琴][al:出塞曲][offset:500][00:00.80]是谁在敲打我窗[00:09.50]是谁在撩动琴弦 这里,ti是标题,a... 阅读全文
posted @ 2013-03-14 13:20 Lekko.Li 阅读(2777) 评论(1) 推荐(2) 编辑
摘要:首先,我推荐大家先看下Equals 和 == 的区别一文再继续往下看本文(虽然文中有些解释还是让人有点感觉不对),因为我就是从园友@一沐阳光的这篇文章中滋生出的问题,才写的本文。当然你也可以直接看本文,因为我并没有把本文与它强行联系在一起。 先来看下面的代码:1 int i1 = 8;2 int i2 = 8;3 bool bo1 = i1 == i2; // true4 bool bo2 = (object)i1 == (object)i2; //... 阅读全文
posted @ 2013-03-06 16:02 Lekko.Li 阅读(1199) 评论(4) 推荐(3) 编辑
摘要:本人是从.NET4.0刚出的时候接触的.NET环境,所以学的东西就是4.0及其之前的。时代飞速前进,目测5.0也快出了吧,但一直也没去接受新的技术。最近由于要学习Web API,快看完了,却发现4.5已经大行其道了,于是又进行补脑。async与await便是其中之一: 这是两个关键字,用于异步编程。我们传统的异步编程方式一般是Thread、ThreadPool、BeginXXX、EndXXX等等。把调用、回调分开来,代码的逻辑是有跳跃的,于是会导致思路不是很清晰的问题,在.NET 4.5中,新推出的async、await关键字,可以帮助我们像写同步方法一样去写异步方法(保证代码的整齐清晰... 阅读全文
posted @ 2013-03-05 15:35 Lekko.Li 阅读(13146) 评论(21) 推荐(19) 编辑
摘要:上次写了篇使用WebBorwser封装网页的博客,收到了不少宝贵意见,后来又懒得去改进,所以也没有新的文章。最近,由于学校宿舍也装校园网了,不再是用Dr.Com,我满怀心喜地试用了Srun3000,结果发现会出现连接上就一两秒掉网现象,并且提示说我的网络出现问题,与服务器连接断开,怒了!我试过各种办法,当然不包括换系统(我用的Win7),还是不行,网卡驱动也都是正常的。于是我试着用Fiddler抓了次HTTP包,发现了问题所在。 原来,srun3000会在发送了连接的包后,又自动发了个注销的包,所以导致我网络中断,并且它在提示错误后就马上自动退出了,导致我产生了程序产生致命错误的假象……... 阅读全文
posted @ 2013-01-09 11:27 Lekko.Li 阅读(2039) 评论(0) 推荐(2) 编辑
摘要:一、准备工作 1、数据库模型: 如你所见,EF模型是上图中三个表,第四个则是数据库视图。 2、数据: 先在HeadAddress表中插入三条数据,再在EndAddress表中也插入三条数据,最后往Customer表中插入三万条随机数据作为测试数据。二、效率比较 1、视图 vs 跨表:遍历所有用户信息(HeadAddress、EndAddress、Customer中的字段) 1 // 视图(ToList) 2 var temp = _DataContext.CustomerView; 3 ... 阅读全文
posted @ 2013-01-03 17:24 Lekko.Li 阅读(2747) 评论(4) 推荐(4) 编辑
摘要:以前在使用EF都没用过视图这种数据形式,最近一个东西数据关联比较复杂,用视图来表现数据会方便很多,于是网上找资料,什么中文、英文的,基本都是教你用脚本、写映射的代码,就是没有傻瓜操作,于是便产生了下文,以飨各位观众: 一、建立EF模型 这个就不用多说了,我在VS2010中建立个模型: 我的目的就是建立一个以Work表(工作)为出发点的视图,把一次工作记录的其它信息也放在视图中,然后根据EF模型建立数据库。 二、SQL Server 2008中建立视图 这部分也是在SQL Server 2008的图形界面完成的,打开刚才建立的数据库,点击视图,右击新建,在弹出的窗口中选中要参与到视... 阅读全文
posted @ 2012-10-31 13:21 Lekko.Li 阅读(5156) 评论(2) 推荐(1) 编辑
摘要:将.NET数据导出为Excel文件,有许多种方法,我这里介绍采用COM组件来操作Excel文件,并且还会涉及异步、同步、进程管理、文件定位等内容,使用WPF做到一个尽量可用的导出界面。一、WPF前台 这个就不用多说了,堆上几个按钮,做一个数据录入的东西,一个状态条: 我这里的数据录入,就是用了几个Textbox,实际上大家可以用任何东西(DataGrid、ListView等),因为在最后都会转成List<MyData>的形式进行导出的,MyData是表示数据记录的对象:1 // 自定义数据类2 public struct MyData3 {4 public string Co... 阅读全文
posted @ 2012-10-19 15:17 Lekko.Li 阅读(2253) 评论(12) 推荐(6) 编辑
摘要:<!-- td {padding:5px 10px;} --> 加密数据可以使用对称加密或非对称加密算法,使用对称加密比非对称密钥快得多,但对称密钥需要解决安全交换密钥的问题。在.NET Framework中,可以使用System.Security.Cryptography命名空间中的类来加密。它实 阅读全文
posted @ 2012-09-11 16:00 Lekko.Li 阅读(3813) 评论(13) 推荐(5) 编辑
摘要:最近学校的破网越来越不像话了,换了这Win7机器后,Dr.Com就一直掉,换了各种版本,也不行,无奈,我只得换成了网页登录模式。但是这上网还要开个网页不能关,无形中增加了我对电脑整洁度的恶评,所以,我决定封装这个丑陋的界面: 使用WebBrowser控件用来加载这个页面,且设置Visibility="Hidden" 让它不显示,就行了。WB_Client.Source = new Uri("http://"+"192.168.20.1"); 上面便是加载页面的方法,WB_Client是控件名,192.168.20.1是学校服务器的IP 阅读全文
posted @ 2012-09-01 16:21 Lekko.Li 阅读(2884) 评论(4) 推荐(2) 编辑
摘要:判断Socket是否连接上,需要通过发包来确认: 1 // 检查一个Socket是否可连接 2 private bool IsSocketConnected(Socket client) 3 { 4 bool blockingState = client.Blocking; 5 try 6 { 7 byte[] tmp = new byte[1]; 8 client.Blocking = false; 9 ... 阅读全文
posted @ 2012-08-02 00:05 Lekko.Li 阅读(14352) 评论(3) 推荐(0) 编辑
摘要:这几天都有事,一直没更新博客,有个内容我早就想好了,可是也没空来写。 在WPF中,我们经常要用到BeginInvoke、Invoke来更新前台界面,实际上都是Post一个Message给了UI线程,然后由UI线程来操作界面更新,只不过BeginInvoke是无阻塞异步式的Post,而Invoke是在Post后使用WaitHandle来阻塞了当前线程直到UI线程处理Message后才返回。 现在我遇到的问题是使用委托的BeginInvoke方法来执行多线程的操作时,其返回值是乱序的。一般而言,乱序是很正常的,因为它本身是个异步方法,调用、返回顺序本身就是随机的,可是在一些情况下,这会存在... 阅读全文
posted @ 2012-08-01 14:12 Lekko.Li 阅读(3384) 评论(2) 推荐(1) 编辑
摘要:用过一段时间的Prism4了,刚开始很不习惯,现在感觉这种松耦合机制是有它的道理。现在便是想整理一些东西出来,方便记忆吧。我们在实现MVVM模式的时候,前台View和后台ViewModel的交互就是通过绑定来实现的,其中控件触发事件的绑定有几种情况: 第一种,控件继承自ButtonBase、MenuItem类,比如:Button、RadioButton、Hyperlink、MenuItem……这种情况下,由于Prism已经帮我们实现了这些控件的Command属性,可以直接绑定Command属性来完成Click事件到ViewModel的绑定: <Button Content="确 阅读全文
posted @ 2012-07-25 13:45 Lekko.Li 阅读(2764) 评论(3) 推荐(2) 编辑
摘要:今天写搜索界面,有许多值范围搜索的项,先是做了两个Textbox加两个Slider来实现选择起始->结束值的范围,后来发现这样用户操作性太不好,前台代码又很臃肿,干脆想办法写了个自定义的控件。首先来看下最终效果吧: 具体的交互基本就是左边框是起始值,右边框是终止值,它们数据的是和两个滑块绑定的,会互相更新。左边的滑块是不能拖到右边滑块之外的,同理右边也不能到左边,如果输入的值超出(小于)上限值(下限),则会把值取为上限值(下限)。 我的思路就是定义两个Slider,然后拼起来,哈哈!好吧,来看前台代码: 1 <UserControl x:Class="FS.Present 阅读全文
posted @ 2012-07-23 00:25 Lekko.Li 阅读(6179) 评论(6) 推荐(3) 编辑
摘要:在WPF中的ListView非常强大,利用各种Template可以实现许多自定义的样式与功能,今天遇到一个自定义选中样式的问题,弄了半天才找到解决方法,分享给大家。 前台XAML代码: 1 <ListView Grid.Row="1" Name="LV_Test" SelectionMode="Multiple" Background="{x:Null}"> 2 <ListView.Template> 3 <ControlTemplate> 4 <Border Corner 阅读全文
posted @ 2012-07-20 09:36 Lekko.Li 阅读(11689) 评论(1) 推荐(5) 编辑