<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_C# Winform</title><subtitle type="text">多做轮子，终有一天能造飞机</subtitle><id>http://feed.cnblogs.com/blog/u/35741/rss</id><updated>2011-05-23T05:59:49Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/35741/rss"/><entry><id>http://www.cnblogs.com/ATGO/archive/2010/08/11/1797278.html</id><title type="text">自动更新</title><summary type="text">自动更新已经是Winform项目中必不可少的组件了。在界面设计那篇文章中提到自动更新，这篇来说一下我在实际项目中用的自动更新程序及解决方案。一些解决方案中有一种是通过共享拷贝实现自动更新，这种方式在有些情况时会出现错误的，错误的具体描述我已经忘记了，大概是由于网络慢TTL大概是1000以上或者TIMEOUT后出现的。共享文件的方式也不符合我的系统在互联网上运行这种情况。自动更新要解决的问题：1．版本管理；2．更新需要更新的程序；3．更新自动更新程序的自身；4．分布式；分布式可能说得过头了，需求是这样的：服务端在总公司，各子公司的职员通过中间网络比如2Mb光纤连接总公司的服务器来进行更新，自然总</summary><published>2010-08-11T06:13:00Z</published><updated>2010-08-11T06:13:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/08/11/1797278.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/08/11/1797278.html"/><content type="html">该文被密码保护。</content></entry><entry><id>http://www.cnblogs.com/ATGO/archive/2010/07/04/1770978.html</id><title type="text">管理系统业务流水号模块的设计</title><summary type="text">本文针对Winform模式的管理系统。一、需求分析：1、 保存前生成还是保存后生成？据我了解，金蝶是保存前生成，SAP是保存后生成。保存前生成有占号，重用等问题，而且按需求来分析，这些都可以不必要，保存后生成是比较理想的，而且应当能满足90%的需求。2、 丢号重用吗？这里所说的丢号是指，已经生成过的并且已经删除掉的。1）、对于删除原单据增加新单据来修改数据的可以用修改单据方式解决2）、一个特殊的地...</summary><published>2010-07-04T13:02:00Z</published><updated>2010-07-04T13:02:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/07/04/1770978.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/07/04/1770978.html"/><content type="html">该文被密码保护。</content></entry><entry><id>http://www.cnblogs.com/ATGO/archive/2010/06/29/1767733.html</id><title type="text">让服务“热插”</title><summary type="text">正常情况下我们的服务端提供了充足而且很好的服务接口，但是需求仍然是千变万化的，而且是随时随刻的。对于在不关闭任何服务的时候能动态加入新服务，这可能又是一个新特性了。 下面以HelloWorld的形式来展示一下是怎么实现的：图1（模拟运行时）图2（要加入的新服务）编译项目后得到DLL，拷到服务端目录下得到如下：图3（模拟添加服务）好了一切准备好了。客户端可以调用了，测试代码如下：object val...</summary><published>2010-06-29T09:26:00Z</published><updated>2010-06-29T09:26:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/06/29/1767733.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/06/29/1767733.html"/><content type="html">该文被密码保护。</content></entry><entry><id>http://www.cnblogs.com/ATGO/archive/2010/06/18/1760036.html</id><title type="text">浅谈管理系统数据库负载均衡及实现</title><summary type="text">数据库负载均衡两个重要的名词：读、写。面向：Winform、SQL Server、管理软件。 在我的系统里面一直想加这个功能，但觉得实在不靠谱，不但要考虑稳定性，而且这样的设计会给系统带来多大性能上的提高也是必须先考虑的，如果没有性能的提高多稳定也是没作用的，不过今天还是拿出来给大家看看，也帮忙考虑一下。Winform和Webform在负载均衡处理的大部分时候有些不太一样的重点，Winform偏重...</summary><published>2010-06-18T03:49:00Z</published><updated>2010-06-18T03:49:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/06/18/1760036.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/06/18/1760036.html"/><content type="html">该文被密码保护。</content></entry><entry><id>http://www.cnblogs.com/ATGO/archive/2010/06/12/1757335.html</id><title type="text">对话网友 - TCP一万连接系统设计</title><summary type="text">问题：支持一万个连接有什么好的建议？ 最近群里比较活跃，其中一位网友提出这样的一个问题给大家讨论。 其实一般人问问题都会出现这种现象，一个需求经过自己的思考形成了一个解决方案，然后在解决方案的过程中发现了问题，然后就把这些问题提交给别人。当我看到这种问题的话，我第一个反应是，需求是什么？ 需求1：实现的是多个终端的监控，终端数量至于要到一万，终端通过TCP每隔一分钟会发送一条数据到服务器，发送数据是200字节左右，服务器这块接收并处理及存储，并且24小时不间断工作。 我提出的解决方案1：其实不看需求的话C#要做到基于TCP一万连接，我看来是没什么很好的办法。（我想起了听说.NET已经支持IOC</summary><published>2010-06-12T10:08:00Z</published><updated>2010-06-12T10:08:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/06/12/1757335.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/06/12/1757335.html"/><content type="html">该文被密码保护。</content></entry><entry><id>http://www.cnblogs.com/ATGO/archive/2010/05/23/1742136.html</id><title type="text">打印设计器</title><summary type="text">管理软件少不了打印，打印格式的设计是一个很烦人的事情，造轮子是我的爱好，而且水晶报表对于我的系统来说可能不适用。因为我的服务器暂时还不想开放1433。几个相关名词：打印机、打印方案、横向打印、批量打印……图1（一个单据N个打印方案）一个单据多个打印方案并不是不常见的事情，尽量的让实施人员简单快速的设计打印格式是一件很有意义的事情。图2格式设计时图3打印预览打印设计器与系统紧密结合，只要在任意一个站点修改保存后其它站点也就能同时得到最新的设计成果。我已经等不急要开始说机制了（我的机制并不完美，在这里只是抛砖引玉）：1． 简单的设计器就不说了跟界面设计器是同一个机制。2． PrintDocume.</summary><published>2010-05-23T09:27:00Z</published><updated>2010-05-23T09:27:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/05/23/1742136.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/05/23/1742136.html"/><content type="text">管理软件少不了打印，打印格式的设计是一个很烦人的事情，造轮子是我的爱好，而且水晶报表对于我的系统来说可能不适用。因为我的服务器暂时还不想开放1433。几个相关名词：打印机、打印方案、横向打印、批量打印……图1（一个单据N个打印方案）一个单据多个打印方案并不是不常见的事情，尽量的让实施人员简单快速的设计打印格式是一件很有意义的事情。图2格式设计时图3打印预览打印设计器与系统紧密结合，只要在任意一个站点修改保存后其它站点也就能同时得到最新的设计成果。我已经等不急要开始说机制了（我的机制并不完美，在这里只是抛砖引玉）：1． 简单的设计器就不说了跟界面设计器是同一个机制。2． PrintDocume.</content></entry><entry><id>http://www.cnblogs.com/ATGO/archive/2010/05/23/1742099.html</id><title type="text">实际项目中客户比较满意的DatePicker</title><summary type="text">1．空值处理2．录入方便：录入dd，录入MM-dd或者MM/dd分隔符只要不是数字就可以了，录入yy-MM-dd3．同时也可以像DateTimePicker选择图1设计时：图2运行时：图3录入方式（只输入日）直接上代码：为方便DatePicker :System.Windows.Forms.TextBox，则继承TextBox， privateDateTime? ToValue(stringtext) { try { return Convert.ToDateTime(text); } catch { } CustomDatemyDate = CustomDate.Parse(text); i</summary><published>2010-05-23T08:14:00Z</published><updated>2010-05-23T08:14:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/05/23/1742099.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/05/23/1742099.html"/><content type="text">1．空值处理2．录入方便：录入dd，录入MM-dd或者MM/dd分隔符只要不是数字就可以了，录入yy-MM-dd3．同时也可以像DateTimePicker选择图1设计时：图2运行时：图3录入方式（只输入日）直接上代码：为方便DatePicker :System.Windows.Forms.TextBox，则继承TextBox， privateDateTime? ToValue(stringtext) { try { return Convert.ToDateTime(text); } catch { } CustomDatemyDate = CustomDate.Parse(text); i</content></entry><entry><id>http://www.cnblogs.com/ATGO/archive/2010/05/23/1742048.html</id><title type="text">界面设计器</title><summary type="text">本文作者注：这个方案并不是我想出来的，我只是造轮子。感谢原作者！好东西还是要拿出来的分享的! 在很多项目里面，因为客户需求不断的变化，程序也不得不断的修改，对于Winform项目而言，修改意味着什么？回想普通Winform程序，界面要修改？简单，打开VS修改界面编译程序发布不就OK了？但是，如果你的最终用户很多分布在不同的部门，不同的部门处在不同的地方，这个发布所带来的成本就越来越大了。自动更新（其它文章中再介绍我在用的一套方案）是一个不错的方案，但有没有比这个更好？答案是有的。 界面设计器只是这种类似方案的其中一个，其它不说先上实际项目中的图：图1生成效果图2设计时效果原理解释： 其实不用.</summary><published>2010-05-23T06:45:00Z</published><updated>2010-05-23T06:45:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/05/23/1742048.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/05/23/1742048.html"/><content type="text">本文作者注：这个方案并不是我想出来的，我只是造轮子。感谢原作者！好东西还是要拿出来的分享的! 在很多项目里面，因为客户需求不断的变化，程序也不得不断的修改，对于Winform项目而言，修改意味着什么？回想普通Winform程序，界面要修改？简单，打开VS修改界面编译程序发布不就OK了？但是，如果你的最终用户很多分布在不同的部门，不同的部门处在不同的地方，这个发布所带来的成本就越来越大了。自动更新（其它文章中再介绍我在用的一套方案）是一个不错的方案，但有没有比这个更好？答案是有的。 界面设计器只是这种类似方案的其中一个，其它不说先上实际项目中的图：图1生成效果图2设计时效果原理解释： 其实不用.</content></entry><entry><id>http://www.cnblogs.com/ATGO/archive/2010/05/23/1741977.html</id><title type="text">SourceGrid延伸我的Grid(一)</title><summary type="text">非常感谢SourceGrid，下载的所有贡献者，在你们身上我学了不少东西。如果我有侵权行为请务必告诉我。SourceGrid是一个开源的Winform下的非常棒的Grid控件。喜欢造轮子的我当然也没错过这次造轮子的机会了，重写一遍Grid控件，除了保留原有的一些好的特性之外，相比SourceGird特点如下：1、 滚动最小单位不再是Row也是一个单位像素2、 改进Selection提高效率3、 使用新的跨行跨列方法，并且可以通过鼠标移动。4、 DevAgeTextBoxButton不再继承UserControl而是继承System.Windows.Forms.TextBox5、 添加支持固定底</summary><published>2010-05-23T04:00:00Z</published><updated>2010-05-23T04:00:00Z</updated><author><name>ATGO</name><uri>http://www.cnblogs.com/ATGO/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ATGO/archive/2010/05/23/1741977.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ATGO/archive/2010/05/23/1741977.html"/><content type="text">非常感谢SourceGrid，下载的所有贡献者，在你们身上我学了不少东西。如果我有侵权行为请务必告诉我。SourceGrid是一个开源的Winform下的非常棒的Grid控件。喜欢造轮子的我当然也没错过这次造轮子的机会了，重写一遍Grid控件，除了保留原有的一些好的特性之外，相比SourceGird特点如下：1、 滚动最小单位不再是Row也是一个单位像素2、 改进Selection提高效率3、 使用新的跨行跨列方法，并且可以通过鼠标移动。4、 DevAgeTextBoxButton不再继承UserControl而是继承System.Windows.Forms.TextBox5、 添加支持固定底</content></entry></feed>
