随笔分类 -  [2]C#

摘要:最近在做卡片视图的程序,要求将控件做成带有圆角的效果,下面是我在网上查找的资料,经过测试,确定可以实现功能。其中方法三既适应于控件,也适应于窗体。先上传效果图:方法一:增加命名空间:usingSystem.Drawing.Drawing2D;添加方法如下:当然各角的点可根据需要确定. 1 private void Type(Control sender, int p_1, double p_2) 2 { 3 GraphicsPath oPath = new GraphicsPath(); 4 oPath.AddClosedCurv... 阅读全文
posted @ 2014-02-27 16:48 Peter.Luo 阅读(5488) 评论(4) 推荐(0) 编辑
摘要:Here is how you can install MVVM Light Toolkit via NuGet in an easy way using only Visual Studio.Step1.Create a new Widows Phone Application ProjectStep2.If you have not used NuGet before then go to VisualStudio Tools-> ExtentionManager as demonstrated below:Step3.Go to"Online Gallery"t 阅读全文
posted @ 2014-01-17 11:58 Peter.Luo 阅读(272) 评论(0) 推荐(0) 编辑
摘要:一、前言在测试驱动开发过程中我们最关注的是如下一些内容:目标专一的测试:理想情况下每个测试只有一条断言;彼此独立的测试:对于每个测试都存在预设环境(Fixture)的建立和清除,以便让测试能够以任意顺序执行;运行速度的测试:你想能够频繁地运行这些测试。以 上目标自然导致一种潜在的矛盾。因为简短而专一的测试就意味着你将会有许多这样的测试,从而保证每个都非常简短而专一。而要想使这些测试彼此独立,显然就 需要针对每个测试都有整洁的预设环境。此外,上面我们最后一个目标即是:希望测试速度执行神速......尽可能地快......以便我们相当频繁地执行 它们(因为我们现在在做测试编程,而还是根本目标--最 阅读全文
posted @ 2014-01-17 11:56 Peter.Luo 阅读(274) 评论(0) 推荐(0) 编辑
摘要:首先了解下深拷贝和浅拷贝的定义: 浅拷贝(影子克隆):只复制对象的基本类型,对象类型,仍属于原来的引用. 深拷贝(深度克隆):不紧复制对象的基本类,同时也复制原对象中的对象.就是说完全是新对象产生的.在C#中,复制一个基本类型,是全盘复制的。而对于引用类型,只是复制一个引用指针。所以在对其进行深拷贝也是比较麻烦的,要实现ICloneable接口的Clone方法。当然也有其他比较快的方法,下面这个是在网上找到的代码。只需要将一个对象序列化为binary stream,然后再将它反序列化为新的对象,就能实现深拷贝。代码如下: 1 public static T CloneOf(T seri... 阅读全文
posted @ 2014-01-17 11:53 Peter.Luo 阅读(529) 评论(0) 推荐(0) 编辑
摘要:1.配置文件 1 2 3 4 5 6 8 9 10 11 12 13 14 15 2.实例化TraceSourcepublic TraceSource _ts = new TraceSource("TraceError");3.在需要记录日志的地方这样写_ts.TraceData(TraceEventType.Information, 0, Message); 阅读全文
posted @ 2014-01-17 11:39 Peter.Luo 阅读(383) 评论(0) 推荐(0) 编辑
摘要:.NET 垃圾回收与内存泄漏> 前言相信大家一定听过,看过甚至遇到过内存泄漏。在 .NET 平台也一定知道有垃圾回收器,它可以让开发人员不必担心内存的释放问题,因为它会自定管理内存。但是在 .NET 平台下进行编程,绝对不会发生内存泄漏的问题吗?答案是否定的,就算有了自动内存管理的垃圾回收器,也会发生内存泄漏。本文就讨论下 .NET 平台的垃圾回收器是如何工作的,进而当我们在编写 .NET 程序时避免发生内存泄漏的问题。> 垃圾回收的基本概念“垃圾”指的是事先分配过但后来不再被使用的内存。垃圾回收背后的一个基本观念是:“无限访问的内存”,但是从来没有无限的内存,当机器需要分配内存但 阅读全文
posted @ 2014-01-17 11:23 Peter.Luo 阅读(631) 评论(0) 推荐(0) 编辑
摘要:上文在《C# 使用BackgroundWorker实现WinForm异步》介绍了如何通过BackgroundWorker实现winForm异步通信,下面介绍如何通过BackgroundWorker实现进度条显示。实现效果图如下所示: 要实现此功能,首先需要创建一个带有进度条的窗体,取名为:frmProcess,窗体中添加processBar和一个Label进行,设置这两个控件的Modifiers值为public。接下来在上文的代码基础上进行操作。(1) 定义全局窗体变量 接着上文中的代码,在窗体Form1下定义变量:1 frmProcess myProcess;(2)Start按钮... 阅读全文
posted @ 2013-11-21 15:48 Peter.Luo 阅读(3818) 评论(1) 推荐(0) 编辑
摘要:一、C# Thread类的基本用法 通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可以通过Thread类的的构造方法传递一个无参数,并且不返回值(返回void)的委托(ThreadStart),这个委托的定义如下: [ComVisibleAttribute(true)] public delegate void ThreadStart() 我们可以通过如下的方法来建立并运行一个线程。 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; ... 阅读全文
posted @ 2013-11-21 15:15 Peter.Luo 阅读(38778) 评论(4) 推荐(4) 编辑
摘要:写了一个基于BackgorundWorker演示异步操作的例子。由于这个理基本上实现了BackgorundWorker的大部分功能:异步操作的启动、操作结束后的回调、异步操作的撤销和进度报告等等。尽管没有太多的技术含量,姑且放上来与大家分享。1、场景描述下面是程序运行时的截图。本程序模拟这样的一个场景:有两组相互独立的数据需要逐条获取和显示,当点击Start按钮,以异步的方式从存储介质中逐条获取数据,并将获取的数据追加到对应的ListBox中,ProgressBar真实反映以获取的数据条数和总记录条数的百分比,同时,当前获取的条数也会在下方的Label上随着操作的继续而动态变化。此外通过点击S 阅读全文
posted @ 2013-11-21 14:56 Peter.Luo 阅读(1741) 评论(0) 推荐(2) 编辑
摘要:BackgroundWorker 组件用来执行诸如数据库事务、文件下载等耗时的异步操作。开始在应用程序中添加一个BackgroundWorker实例,如果用的是VS,可以从工具上直接拖到应用程序:BackgroundWorker backgroundWorker1 =newBackgroundWorker();为了开始在后台操作,必须调用BackgroundWorker的RunWorkerAsync()方法,当调用此方时,BackgroundWorker 通过触发DoWork 事件,开始执行后台操作,DoWork 事件的代码是在另一个线程里执行的。代码如下:代码一:BackgroundWork 阅读全文
posted @ 2013-11-21 14:05 Peter.Luo 阅读(1963) 评论(0) 推荐(0) 编辑
摘要:最近在处理移动端护理通信,不同平台之间使用XML文件进行相互通信。下面是简单的创建XML和输出XML文件代码: 1 //用C#创建XML 2 XmlDocument doc = new XmlDocument(); 3 XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "GB2312", null); 4 doc.AppendChild(dec); 5 //创建一个根节点(一级) 6 XmlElement root = ... 阅读全文
posted @ 2013-01-30 10:51 Peter.Luo 阅读(625) 评论(0) 推荐(0) 编辑
摘要:折腾两台扫描仪程序的修改,今天有空把程序中涉及到扫描仪操作的代码贴出来,供大家一起交流学习。 1 public ArrayList TransferPictures() 2 { 3 ArrayList pics = new ArrayList(); 4 if (srcds.Id == IntPtr.Zero) 5 return pics; 6 7 TwRC rc; 8 IntPtr hbitmap = IntPtr.Zero; 9 ... 阅读全文
posted @ 2012-07-06 17:01 Peter.Luo 阅读(6193) 评论(3) 推荐(0) 编辑
摘要:这两天忙于将扫描仪扫描出来的文件缩放图片分辨率和大小,开始尝试修改扫描仪设置的参数,结果发现没有办法修改扫描仪参数,最后尝试将扫描后的图片进行代码处理,下面是写的是关于图片进行无损压缩的代码。 1 /// <summary> 2 /// 无损压缩图片 3 /// </summary> 4 /// <param name="sFile">原图片</param> 5 /// <param name="dFile">压缩后保存位置</param> 6 /// <param name= 阅读全文
posted @ 2012-07-06 16:53 Peter.Luo 阅读(3075) 评论(5) 推荐(1) 编辑
摘要:位图信息头BITMAPINFOHEADER是一个结构,其定义和注释如下所示: 1 /// <summary> 2 /// 位图信息头 3 /// </summary> 4 [StructLayout(LayoutKind.Sequential, Pack = 2)] 5 public class BITMAPINFOHEADER 6 { 7 public int biSize;//指定这个结构的长度 8 public int biWidth;//指定图像的宽度 9 public int biHeig... 阅读全文
posted @ 2012-07-06 10:55 Peter.Luo 阅读(1379) 评论(0) 推荐(0) 编辑
摘要:近期由于项目需求,简单研究了一下客户端调用扫描仪的问题,总结了一下,大概有以下几种方式:(1)TWAIN TWAIN指TWAIN协议,全称Toolkit Without An Interesting Name,无注名工具包协议,是应用软件从计算机外设获取静态图像的国际标准。 TWAIN是一项重要的接口标准,为软件开发商和硬件设备生产厂商之间提供了一个统一的规范,以有效地避免系统及设备之间的不兼容问题。TWAIN协议为操作系统提供了软件支持,使得符合TWAIN协议的软件通过调用TWAIN协议接口就能从兼容TWAIN协议的外设上获取静态图像,而不必考虑外设的功能差别。TWAIN共包括4个二进制文件 阅读全文
posted @ 2012-07-05 12:52 Peter.Luo 阅读(1730) 评论(0) 推荐(0) 编辑
摘要:一、如何解决单击记录整行选中的问题View->OptionsBehavior->EditorShowMode 设置为:Click二、如何新增一条记录(1)、gridView.AddNewRow()(2)、实现gridView_InitNewRow事件三、如何解决GridControl记录能获取而没有显示出来的问题gridView.populateColumns();四、如何让行只能选择而不能编辑(或编辑某一单元格)(1)、View->OptionsBehavior->EditorShowMode 设置为:Click(2)、View->OptionsBehavior 阅读全文
posted @ 2012-07-02 12:52 Peter.Luo 阅读(684) 评论(0) 推荐(0) 编辑