随笔分类 - C#
摘要:介绍这是我在CodeProject上的第一篇文章。我希望对你有用当我开发软件的时候。我通常因为一个很耗时是任务需要完成。而请求让用户等待,并且通过也允许用户取消。不论我做何种操作(比如下载文件。保存大文件等等)。我都需要做下面几件事:通过一个模态对话框来让用户等待操作完成能让用户看到进度。能让用户随时取消。我搜了好久也没找到拿来就能用的窗体控件,也许是我没找到。于是我自己写。。图1背景BackgroundWorker 类包含了我需要完成任务的所有东西。我只需要给他提供一个对话框。使用代码ProgressForm 包含了一个BackgroundWorker ,你要做的仅仅就是提供了一个完成工作的
阅读全文
摘要:1 介绍我知道。网上有很多现成的FTP软件。但是。我们也想要了解FTP的一些底层机构,因此。 这个开源的项目在你学习FTP知识的时候也许对你有些帮组。程序的界面看起来像FileZilla,FileZilla虽然流行但是有些bug,当我打开我博客的时候总是有问题。我需要通过FTP连接我的服务器。发送文件,下载文件等等。因为。我决定写我自己的软件来处理所有的情况。FileZilla足够好。但它不是我的。2 背景看看我们已经知道的。我们知道FTP是一个标准的基于TCP网络协议。用于从一个主机向另一个主机传输文件。它是一个C/S架构。图2FTP程序曾经是基于命令行的。我们仍沿可以通过cmd.exe连接
阅读全文
摘要:介绍本文讨论生成器设计模式,讨论该模式什么情况下使用,怎么实现。并且。最后会有一个简单的生成器模式的实现。背景当我们的程序需要创建一个对象。而这个对象必须由很多不同的对象来构造的时候。为了构造最后的对象。我们不得不组合那些部分对象。最后我们会发现我们的代码被各种各样的部分对象的细节所弄的难以理解为了说明上面的情况。我们做一个手机生产制造系统的例子。假定我们我们有一个已经安装在手机供应商那块的一个系统。现在供应商系那个要根据一些参数来创造一个新手机。比如触屏,操作系统,电池等。如果我们已经有了这些部分的对象,那么上述部分的任意组合将会导致客户端代码复杂难以管理。比如决定生产哪种手机的模块。生成器
阅读全文
摘要:背景对于指定的任务有不同的方案可供选择,通常是很好的。因为可能某一种方案会更加适合该任务,但是有时候做决定会很难。因为这些不同的方案有其各自的优缺点。我经常会停下来好好想想,是不是接口比委托更适合或者是更不适合某个任务。有时候我甚至会回去看我写的代码,这些代码刚开始使用委托来实现,我后来用接口替换掉。因此,是时候写篇文章来阐述一下这两种技术的优缺点了。性能我经常看到有人问接口是不是比委托更快啊。或者是不是相反。通常。别人给的答案会是: 接口更快。委托相当慢 委托更快,因为他们是指向方法的指针,接口则需要一个v-table(虚函数解析表),然后找到委托他们一样快,但委托更容易使用好吧。那些都是错
阅读全文
摘要:介绍 使用ListViewLayoutManager 可以控制ListView/GridView列的布局1. 固定列宽:有着固定列宽的列2. 范围列宽:有着最小最大宽度的列3. 比例列宽:成比例的列宽范围列宽可以限制列的宽度,也包括填充列的剩余可视区域。据我们了解的Html中的表格和Grid空间。比例列以一个百分比来定义列宽,以下几个因素共同确定了比例列的宽度。1. 垂直ListView滚动条的可视与否2. ListView控件宽度的改变3. 非比例列宽度的改变本程序支持通过XAML或是后台代码来控制ListView。如果通过XAML来控制。则允许ListViewLayoutManager .
阅读全文
摘要:今天早上翻译了Yet-Another-XML-Serialization-Library-for-the-NET,将近4个小时把30页的文档翻译完了。因为文章很长。重新排版压力太大。。我把翻译好的做成了pdf,所以本文只列出前两部分。如果不符合规则。请管理员撤下。文档下载:XML序列化神器整个文档目录如下:目录1介绍... 12 为什么使用YAXLib. 23 YAXLib使用指南... 23.1 基本的使用和格式化... 23.2 序列化集合类的对象... 53.3 序列化字典类... 83.4 序列化嵌套的对象... 133.5 添加xml注释... 174 反序列化和错误处理机制...
阅读全文
摘要:AvalonDock2.0可以用来为WPF创建一个类似Visual Studio的界面,深入理解如何使用AvalonDock进行开发是很重要的。在这个入门指南里,我将演示如何开始使用AvalonDock,下面的文章都是基于2.0版本的。并且不能用于早期的版本。AvalonDock是一个组合的布局模型,很多的控件都在视图上显示,一个DockingManager 类也显示在停靠区,用于可以拖拽文档和工具。从下面这个截图中我们可以理解AvalonDock组件DockingManager这是AvalonDock中的核心控件,它将包含的窗格排序,处理飞出的窗格,还有浮动的窗口。在上面这个图中,Docki
阅读全文
摘要:如果使用C#代码来删除文件或是文件夹。会将文件和文件夹直接删除,而不是删除到回收站。可以调用Microsoft.VisualBasic.dll提供的方法。首先对项目添加名为Microsoft.VisualBasic.dll的引用,然后添加命名空间using Microsoft.VisualBasic.FileIO;最后示例代码如下:usingSystem;usingMicrosoft.VisualBasic.FileIO;namespaceleaver{ classProgram { staticvoidMain(string[]args) { ...
阅读全文
摘要:今天实在看WPF揭秘的时候看到TaskDialog这个控件的。然后就去找了一下开源的代码。在codeproject上发现了这个,非常给力。。另外codeproject改版后很漂亮哦。介绍:这是用WPF实现Vista上TaskDialog效果的代码。Messagbox消息框通过调用重写的静态Show方法。TaskDialog就会表现的像一个Messagebox。他有四个文本类型的属性:Header(头部), Content(内容), Detail(更多), 和 Footer(底部),其实Detail是一个折叠的区域, 而Header和Footer还有一个icon属性(HeaderIcon和Foo
阅读全文
摘要:本文译自Walkthrough on creating WCF 4.0 Service and Hosting in IIS 7.5最近在学习WCF的时候。寄宿IIS7.5这部分总是搞不定。搜了很长时间。发现也是很多文章也是人云亦云。根本通不过。于是组合了一下关键字,搜了一下英文的文章。总算是搞定了。目标本文将会一步步教给你怎么样创建一个基本的 WCF 4.0 服务?怎么样把WCF服务寄宿在IIS 7.5?客户端如何测试服务可用创建WCF服务创建WCF服务,打开VS,选择新工程,然后从WCF的标签页里,选择WCF服务应用程序,来创建一个新的WCF服务。在IService1.cs 和Servic
阅读全文
摘要:首先看下效果图:然后是两张gif的对比 //原本图是正着走的 //处理后是倒着走的gif是动态的嘛。然后我昨天和一个朋友聊天的时候发了一串相同的gif图,然后看着千篇一律的东西。我想能不能写个程序实现gif的初始状态不同呢。什么意思呢。我们知道,gif是由帧构成的,我想实现的功能是比如一个gif共有十帧,那么我写出来的程序能够生成10个gif文件,分别对应不同的初始状态来进行循环。后来一想,gif帧太多的话,比较慢,而且也不实用,于是决定简化一下,只做一个反转工具,比如一个gif是从左到右播放的,通过这个成功可以生成一个相同的gif图,不过是倒着播放的。思路很简单,就是先把gif分解成很多帧,
阅读全文
摘要:首先,这个拖拽功能是我今天早上突然想到的。我想我能不能做呢。事实上C#上实现确实很简单。拖出一个窗体。然后需要实现窗体的DragDrop和DragEnter方法。具体代码如下 private void Form1_DragDrop(object sender, DragEventArgs e) { string path = ((Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); //检索与指定的数据格式关联的数据。 MsgBox.Show...
阅读全文
摘要:View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 7 namespace CTest 8 { 9 class PropertyFileOperator10 {11 private StreamReader sr = null;12 /// <summary>13 /// 构造函数14 /// </summary>15 /// <param nam...
阅读全文
摘要:免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接地址:http://www.codeproject.com/Tips/80953/Converting-VS2010-Solution-to-VS2008如果你使用VS2010的任何版本写代码,那么在VS2008中就不能打开VS2010的解决方案了,为此,通过以下三步就可以解决了一.对于工程名.sln;1.用你喜欢的编辑器打开sln文件,比如notepad++2.找到下面的字符串Micr
阅读全文
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Security.Cryptography;namespace CTest{ class Program { static void Main(string[] args) { Console.WriteLine("*******MD5加密工具*********"); while (true) { ...
阅读全文
摘要:找零钱这个问题很清楚,无非就是始终拿可以取的最大面值来找,最后就使得张数最小了,这个实现是在假设各种面值足够多的情况下。首先拖出一个界面来,最下面是一个listbox控件对应的代码:问题比较简单,有注释View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Win.
阅读全文
摘要:免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接地址:http://www.codeproject.com/Tips/312312/Counting-lines-in-a-string我需要统计一下字符串的行数,因此我就写了一个超级没有技术含量的蛮力方法来统计了。static long LinesCount(string s) { long count = 0; int position = 0; while ...
阅读全文
摘要:免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接地址:http://blog.csharptutor.com/2011/10/05/making-code-more-readable-with-anonymous-functions/如果你使用过javascript,你可能通常使用已经定义好的click事件,来激活你定义的事件,比如下面这段代码$("#submit").click(function(){ perfo
阅读全文
摘要:免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!原文链接地址:http://www.codeproject.com/KB/WPF/TextBoxWithEllipsis.aspx介绍WPF文本框控件类,不像TextBlock,他没有内置的选项,以便当文本内容超过可视区域的时候,显示省略号,我想让我正在做的一个项目能够拥有这个特性,可是,我在网上找不到一个比较简单的方法实现他,于是啊,我决定自己写个TextBox的继承类,必要的时候能够显示省略
阅读全文
摘要:首先是数据表的设计其中treeId指的是该菜单项的父ID,如果treeId为0.表示该菜单项为根菜单项,否则表示他为某菜单项的子菜单,比如id为2的项,他的父节点是1.则他是张三的子菜单,而张三是根菜单,position只用于根菜单项,用于控制显示的顺序。往网页里拖入一个menu控件,然后添加代码using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControl
阅读全文