自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

老田低代码

专注于免费开放的低代码开发平台,我们推动不了科技的发展,但是希望有机会推动更多中小企业应用软件从0迈向1

  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 C#基础系列:开发自己的窗体设计器(实现控件的选择)

所谓控件的选择,就是在设计器上某个控件被选中或者控件获得焦点(通过Tab调整控件焦点)的时候,在控件的四周显示出调整手柄。如下图: 如上,通过控件的调整手柄,我们可以调整控件的宽度和高度。而实现这个调整手柄的关键点其实得益于vs2005控件的灵活性。因为这8个正方形的调整手柄其实就是8个控件。 所以我们本文的重点如下:1、开发自定义的调整手柄控件,也就是这正方形控件;

2008-10-28 12:03:00 15496 16

原创 C#基础系列:实现自己的ORM(ORM的基础概念)

ORM(O/R Mappping对象关系映射)的基础概念 在我们的系统中,存在大量的需要进行持久化存储的对象,这些对象可能是各种各样的业务单据,也可能是我们的系统配置信息等。另外一些属于内存中使用而不需要进行持久化存储的对象,不属于我们的讨论范围。而在支持对象序列化的语言比如C#,Java中,我们可以将这些对象序列化到磁盘文件或者直接保存到关系数据库中。其中关系数据库是我们最主要也是最安全

2008-09-08 17:28:00 16697 9

原创 解析Html生成标签树(一)

解析Html成标签树结构以后,我们不但可以很容易取得想要的元素,同时也很容易将Html转换成对应的XML文件。但是由于代码是在公司写的,所以没有粘贴出来的可能性,所以我只能给出大概的代码流程,具体细节描述,相信各位都很容易写出来,并且写的比我好,关键的是算法实现思想。算法的关键如下: 1.         Html中每个tag都是都将作为树中的一个节点存在的,每个tag都属于树中的某一层。

2008-06-06 17:38:00 24608 51

原创 怎么用C#实现和Java的SHA1PRNG 256位互通的加解密?

在Java中使用AES进行加解密的时候,有时候会使用256位的key且摘要算法使用SHA1PRNG生成32字节(256位)的密钥。但是如果使用256位,那么在C#中就不能解密了。经过分析C#中的SHA1CryptoServiceProvider生成的key摘要只有160位(20字节)。如上面Java加密的用C#久不能解密,因为SHA1CryptoServiceProvider最多生成20字节160的摘要。请问各位专家,C#中有对应的方法吗?

2023-05-29 12:00:01 598

原创 对于图表控件Chart,我们其实也自己做了一个版本的

早期开发我们的低代码平台的时候,总觉得.NET自带的Chart控件怎么用都不舒服一样,当时的想法就是觉得要能够随时调整风格,样式、最主要就是想与我们低代码开发平台的数据结构匹配。虽然最终我们逐渐淘汰了自己写的Chart控件,虽然确实是做了一些无用功,但是却为我们积累了不少GDI的开发经验,比如后来的很多自研的控件,比如单据转换的流程图,小部件,形状等等控件就都很容易开发出来了。在我们自己实现的Chart控件中,实现了柱状图,这些图,由于是自己开发的,所以想怎么调整样式都可以。可以实现这些图,柱状图。

2023-05-06 17:58:54 217 1

原创 Visual Studio工具箱控件有现成的吗?

因为我们要实现的模式有点复杂,先预览一下,下面说为什么有点复杂而要自己开发呢。如果是普通的展示,其实还是比较容易实现,但是我们低代码中,设计打印界面的时候,会把与当前单据相关的引用字段等都会显示到工具条中,用户只需要拖拽就行。并且对于引用链长(比如“客户”表单上引用了“员工”表单上的员工姓名,“员工”表单又引用了“部门”表单上的部门名称,这就是引用链)的单据,那么还需要能够在工具条中分页显示。基于上面这两点,用第三方的组件就不是很灵活了,自己开发的话虽然需要一定的工作量,但是可以根据自己的需求灵活定制。

2023-05-05 19:39:11 230

原创 怎么实现.NET下的DataGridView合并列表头

由于要合并列表头,那么我们需要一些额外的扩展信息:合并后的HeaderText,如上图中的“本月业绩”和“上月业绩”、合并列数、以及单元格是否属于合并单元格,比如上图中的“订单数”这一列,那需要能够设置合并后的HeaderText,也需要设置合并列数。但是“订单金额”列,显然只需要知道自己属于某个合并列就行。扩展HeaderCell的目的是要在Paint中重新绘制HeaderCell,所以主要代码在override的Paint方法中。2、扩展DataGridViewColumnHeaderCell;

2023-05-03 14:27:30 2268 1

原创 为了做低代码平台,这些年我们对.NET的DataGridView做的那些扩展

为了系统更易于维护,减少其对第三方的依赖风险,我们总是坚持着“能自己实现的一定不要依赖于第三方”,所以我们低代码平台本身的各种控件,都是基于.NET Framework自带的基础组件进行扩展而来,虽然多写了一些代码,但是最终的结果还是很值得的,整个客户端,开发平台等等包都非常非常小!我们的低代码开发平台从一开始决定做的时候,就追求未来能够支持多种类型的客户端,目前支持Winform,Web,H5,FlutterAPP,当然了,未来也有可能会随着实际的需要淘汰掉一些客户端的。某个数值型的单元格,显示计算器。

2023-04-30 11:34:24 1714

原创 Winform的DataGridView单元格自定义显示(CellPainting)

我们低代码开发平台免费开放后,收到最大的需求就是“单据转换”,主要是我们以前所面对的行业的需求压根没法通过单据转换这样的配置来实现,所以我们一直都是用后台插件的形式处理他们的个性化计算,转换需求。但是免费开放后,面对的都是各种各样的行业,有很多需求用单据转换确实更简单和容易些。所以昨天有朋友看了我们截图后私信想了解下我们图片上的“日期字段”的格式化按钮怎么做的。我们采用了流程化的方式来实现单据转换,同一个单据可以支持多个转换流程,每个流程支持多个转换节点,每个节点完成不同的转换需求,逻辑很合理。

2023-04-26 12:45:13 1669

原创 Winform下实现Grid布局

,他用的方法是在窗体大小变化后,重新计算根据窗体的新Size计算这一个控件的Size。所以我给他评论是:单个控件压根不需要这么做,而多个控件这么做又没有意义,所以最好的办法就是参考CSS的Grid布局方法自定义一套基于WIniform的Grid布局。只不过如果使用Anchor的话,对于一个控件确实是可以的,但是多个控件行列布局的时候用Anchor就不行了,放大缩小后完全乱套。所以刚好周末,就花了点时间描述一下我所说的参考CSS的Grid布局方法来实现一个Winform下的Grid布局,

2023-03-26 14:25:35 1152 5

原创 C#基础系列:开发自己的窗体设计器(PropertyGrid显示中文属性名)

  既然是一个窗体设计器,那就应该能够设置控件的属性,设置属性最好的当然是PropertyGrid了,我们仅仅需要使用一个PropertyGrid.SelectedObject = Control就可以搞定,让PropertyGrid显示Control的所有属性。可是这里显示的属性名是英文的。对于我们开发人员来说这无可厚非,我们也乐于接受。并且让PropertyGrid显示中文属性名,这对于我

2008-10-30 13:06:00 19332 15

原创 C#基础系列:开发自己的窗体设计器(实现控件的拖动)

 控件移动的关键点就是需要设计一个独立于任何控件的类(UIMoveKnob)来控制控件的移动。我这里实现的方法只针对一个控件,如果需要同时选择多个控件,然后同时移动的话,你需要修改这个类,这里是有点难于控制,我使用的方法严重耦合,所以只在这里给出移动一个控件的办法,具体移动过个控件的方法请各位讨论。 要移动某个选定的控件,我们需要实现控件的:MouseDownMouseMove

2008-10-28 16:41:00 17009 10

原创 C#基础系列:开发自己的窗体设计器(在容器上拖动鼠标增加控件)

  本文我们实现一个简单的通过拖动鼠标来增加控件的方法。在我们使用vs2005来开发WinForm应用程序的时候,我们通过选择左边“工具箱”中的某个控件,然后在我们自己的窗体上通过拖动鼠标,一个我们需要的控件就出现了,觉得很爽!其实vs2005中已经有这方面的组件,我们通过简单的代码就可以直接使用,这个你可以用“窗体设计器”Google一下,已经有人做了这方面的介绍。所以我要说的是,难

2008-10-27 16:48:00 15692 10

原创 C#基础系列:开发自己的窗体设计器(总纲)

我所处的行业,所使用的业务系统都不大,但是个性需求极其多,每个地区,每家公司都可能存在很大的差别。所以我就想能够弄一个类似于vs2005的WinForm窗体设计器的开发平台,让用户拖拖拽拽就可以添加自己需要的控件,或者删除不需要的控件,从而完成大部分的工作,实现功能的扩展,而我需要做的,只不过是写写插件代码。 这种类型的系统目前已经有很多,但是那些都是属于别人的,即使我能够免费下载到一个,

2008-10-27 16:41:00 18277 27

转载 社区网站SNS化的思考 – SNS之我见(三)

 社区网站SNS化的思考 – SNS之我见(三)关键字: sns, community 一、 SNS工具还是社区网站? Facebook的创始人马克扎克博格在多次接受采访的时候都强调过:Facebook是一个社交工具,在前面两篇文章我也阐示了这一点。因此SNS网站在我看来分为两大类: 1、Facebook类的SNS,他只是一个社交工具,他不是社区,没有UGC,没有社区文化。Face

2008-10-21 11:00:00 3866

转载 点评国内Facebook克隆网站 - SNS之我见(二)

 点评国内Facebook克隆网站 - SNS之我见(二)关键字: sns, clone 点评国内SNS网站 1、小富即安、目光短浅的校内网 在校内开放API之前,我看错了两件事情:一个是低估了国内web2.0小网站开发app的热情;一个是高估了国内SNS网站商业眼光。 校内网在国内能够成功,我觉得机遇是主要的原因:王兴搞校内网的时候,国家教委开始管制各大高校的BBS,在校学生们无处可

2008-10-21 10:57:00 4021

转载 Facebook的成功秘诀是什么 - SNS之我见(一)

Facebook的成功秘诀是什么 - SNS之我见(一)关键字: sns, facebook SNS是2008年中国互联网最火爆的现象了,无数的SNS网站一夜之间纷纷涌现,前仆后继,慰为壮观:校内、海内、开心、一起、蚂蚁以及无数的Facebook克隆SNS网站陷入了一场空前惨烈的厮杀当中,每个人都生怕错过互联网下一个the big thing的机会,一波接一波的抄袭、炒做和竞争

2008-10-21 10:51:00 4714 5

原创 Google Chrome真的会成为主宰吗

自从Google推出免费开源的浏览器GoogleChrome以后,在各个与IT相关的网站上都能够看到关于Google Chrome的评论,很多是说它将如何如何对IE以及FireFox形成威胁的评论。可是我总觉得某些话不吐不快,真的能造成对这两款浏览器的绝对威胁吗?我的观点是NO。下面我就我的观点以IE为主作点点看法。首先,Google Chrome的几大亮点是:免费,开源,界面简洁,速度快,据

2008-09-22 09:49:00 4930 16

原创 C#基础系列:实现自己的ORM(MiniORM的测试代码)

看到有同学反馈,说MiniORM代码有Bug,也不知道怎么用,所以今天我就写了些测试代码。希望能够给点帮助。同时也发现了两Bug,一并罗列出:1、MiniORM.PubFuncs.GetObjectType()函数:public static Type GetObjectType(string assemblyname, string namespacename, string cla

2008-09-11 10:56:00 9563 15

原创 C#基础系列:实现自己的ORM(构造我自己的ORM)

构造我自己的ORM通过前面两章的描述,我相信很多朋友都已经明白我了下面将要讨论到的ORM的实现方法了,那就是根据自定义Attribute来定义O/R Mapping规则,然后通过反射来动态获取此规则,动态构造SQL语句。由于这个小东西(ORM)出生在深圳,所以我想来想去,她应该有个深圳的名字,所以我就叫她“MiniORM”。不知道各位认为如何?MiniORM采用的是ONE_INHERIT_TR

2008-09-08 17:35:00 14291 45

原创 C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)

反射以及Attribute在ORM中的应用 一、 反射什么是反射?简单点吧,反射就是在运行时动态获取对象信息的方法,比如运行时知道对象有哪些属性,方法,委托等等等等。反射有什么用呢?反射不但让你在运行是获取对象的信息,还提供运行时动态调用对象方法以及动态设置、获取属性等的能力。反射在ORM中有什么用呢?我这里所讨论的ORM实现是通过自定义Attribute的方式进行映射规则的描述的。但是我

2008-09-08 17:33:00 23422 15

原创 在C#应用中,设计自己的配置文件

 在系统开发的过程中,我们总是需要使用配置文件来保存一些我们需要保存的系统参数,毕竟这是.Net时代,如果再使用注册表那就显得复杂了,毕竟操作注册表的API并不是哪么容易理解的。所以在.net应用程序中,都默认出现一个App.Config(对于 Web应用程序是Web.Config)我们可以将系统运行所需要的参数采用加密或者明文的方式保存在这个文件中。但是当我们需要大量的,并且有一定逻辑结构的

2008-08-31 14:49:00 8655 12

原创 GZipStream实现压缩以及出现的问题

在抓取页面的过程中,在存储抓取到的页面内容的时候我需要先将页面压缩再存储,为了使用上的方便,采用了2.0下的GZipStream来进行压缩。引用如下:using System.IO;using System.IO.Compression;......public static byte[] Compress(byte[] data){    Memory

2008-08-29 09:29:00 9305 6

原创 DataGridView导出到Excel

  这几天做一个Winform的系统,需要用到将DataGridView导出成Excel,以前一直没有在意这些方面的问题,因为以前做VB的时候已经做过很多这方面的导出,所以总认为小菜一碟。我用的是VS2005和Office2003。可是真正使用的时候才发现问题多多:首先是添加了Microsoft Excel11 Object Libray之后,发现引用里面的” Microsoft.Of

2008-07-05 15:39:00 7005 8

原创 记录KMP算法,记录其经典之处。。。

离开学校已经多年了,早已经不再抚弄那些陈旧的书籍。周末,深圳的天气阴沉,老天这段时间总是很乐意显摆,动不动就给深圳人民来次几十年一遇的暴雨,似乎要把一年的雨水全部在这些天下完似的。所以呆在家里面看电视,上网,实在也无聊。随手翻开大学时候的(数据结构,还留着啊,当初刚出来的时候总没有底气,总希望能够随时充电用)。看到了字符串的模式匹配一章。突然发现KMP算法是如此的经典。故记之。。。 

2008-07-03 14:30:00 3647 1

原创 Javascript中的面向对象编程实例

一直以来,我都主要是做winform方面的编程,最近做了点web方面的,所以也研究了几天的javascript。偶有心得故记之:应用面向对象的思想在javascript中同样适用,关键的是你敢不敢用,想不想用。我曾使用vs2005编写了一个vs2003工具箱完全类似的导航工具条,我比较喜欢在winform中通过这种方式向用户提供应用程序功能的导航。所以我也想在web中也使用这种方式。网络上

2008-06-15 00:41:00 4370 8

原创 解析Html生成标签树(二)

前面两篇讲解了解析Html的思想个核心算法,感谢各位提出了意见。先专门列出一文作为解释:1、ViewStates提到,“”怎么办?这个是可以解析出来的,其中解析后节点名为“td”,而“ 阿道夫骄傲了沙发如图:上面的图中,包含了上面提到的例子。 回复ml_dark 兄象这种..你看看你的解析结果....解析结果如上图。

2008-06-13 15:41:00 6255 11

原创 解析Html生成标签树(前言)

提示:根据这几天的访问量跟踪,我发现很多访者都没有很好地关注到真正进行算法描述的章节《解析Html生成标签树(一)》,特此进行提示。搜索引擎一个最重要的步骤就是,获得网页的正文内容,我相信每个人看见一篇网页的时候,从视觉上都很容易知道哪个部分是正文内容,哪个部分是版权信息,哪个部分是广告信息。但是要让计算机明白这些,估计要若干年(到时候还不知道人类是否已经变异成4只眼睛,5个耳朵。。。)之

2008-06-03 18:31:00 10937 13

原创 开张

一直以来都想写点自己的东西,但是人懒没有办法。。。今天以此为证,希望今后能够为各位在我的空间上留点点内容,不要荒芜了这块土地。。。

2008-05-12 18:47:00 1168 1

实现自己的ORM系列源码 - MiniORM

这是我Blog(http://blog.csdn.net/RonoTian)中的系列文章《实现自己的ORM》系列的配套资源,如果你需要详细的了解MiniORM的相关实现,那请自己查看我Blog中相关文章。

2008-09-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除