我在上海的第一份工作是在群硕做.Net控件开发。现在看来当时写的代码里有很多不成熟的地方,不过当年我是在写出一些代码之后对面向对象开发有了真正开窍的感觉的。所以这段代码对我来说意义还是蛮大滴。在这里贴上我进项目组之前做的一个Training Project的源代码,希望能给开始接触控件开发的各位朋友带来一些灵感。

下载源代码 (基于.Net 2.0)

这个Training Project的内容是做一个显示磁盘空间使用情况的工具,在这个工具里要用柱状图和饼状图来显示选定的文件夹中各个子文件夹和文件的大小和所占比例。在技术上要求对窗体,按钮,滚动条,进度条等所有Windows控件进行重新开发和绘制,同时还要开发新的文件列表控件和图表控件。

所以大家可以看到在这个程序里除了左上角的图标是借用的SQL Server 2005的图标以及窗体背景图是现成的以外,其余的界面全是通过GDI+“手绘”出来的,没用任何现成的图片。

这里面最难处理的就是那个结合TreeView和ListView的文件列表控件以及图表控件了。

在开发这些控件时,我用到了很多面向对象的特性,希望能给大家一些灵感。

转载于:https://www.cnblogs.com/laynelin/archive/2009/12/26/1632611.html

刚学GDI+和.Net WinForm控件开发时做的Training Project相关推荐

  1. Winform控件开发(1)——Label(史上最全)

    文章目录 前言: 一.属性 1.Name 属性 2.AllowDrop 属性 3.Anchor 属性 4.AutoEllipsis 属性 5.autosize 属性 6.backcolor 属性 7. ...

  2. WINFORM控件开发 来源:博客园 作者:纶巾客

    (1)开篇 我本人不是专业的控件开发人员,只是在平常的工作中,需要自己开发一些控件.在自己开发WinForm控件的时候,没有太多可以借鉴的资料,只能盯着MSDN使劲看,还好总算有些收获.现在我会把这些 ...

  3. Winform控件开发(9)——ListBox(史上最全)

    一.属性 // Create an instance of the ListBox.ListBox listBox1 = new ListBox();// Set the size and locat ...

  4. WinForm控件开发总结(五)-----为控件的复杂属性提供类型转换器

     上一篇文章我已经介绍了TypeConverterAttribute元数据的作用,本文将通过代码向你展示具体的实现.在这个例子中,我要给控件添加一个复杂的属性,这个属性对这个控件没有什么功用,纯粹是为 ...

  5. Winform控件开发(15)——contextMenuStrip(史上最全)

    以上菜单栏contextMenuStrip中含有四个子空间对象,分别如下: 1.ToolStripMenuItem ToolStripMenuItem对应上图的"文件"所在的菜单项 ...

  6. 多点滑块滑杆控件----------WinForm控件开发系列

    /// <summary>/// 多点滑块进度控件/// </summary>[ToolboxItem(true)][DefaultProperty("Items&q ...

  7. Winform控件开发(11)——numericUpDown(史上最全)

    一.属性 1.InterceptArrowKeys 指示用户是否可以使用键盘的向上或者向下键来选择值,但是控件上面的向上和向下键依然可以控制控件的值增大还是减小 2.DecimalPlaces 获取或 ...

  8. Winform控件开发(14)——NotifyIcon(史上最全)

    前言: 先看个气泡提示框的效果: 代码如下: 在一个button中注册click事件,当我们点击button1时,就能显示气泡 private void button1_Click(object se ...

  9. Winform控件开发(10)——CheckedListBox(史上最全)

    一.属性 1.CheckOnClick 就是当鼠标点击一个新的项的时候,是否立马改变选中状态,如果为false时,当鼠标单击一个新的项时,这个项的选中状态不会立马改变,而是再次点击时才会改变,类似一个 ...

最新文章

  1. 让织梦内容页arclist标签的当前文章标题加亮显示
  2. nginx-rtmp常用指令
  3. JDK12的五大重要新特性
  4. java学习(30):巩固练习
  5. (O)JS核心:call、apply和bind
  6. 2019商业数据分析软件有哪些
  7. static Splitterwnd hide and show --by wyj
  8. 微信小程序 内容评论-回复评论-回复回复的实现
  9. 华为鸿蒙麒麟玉兔_鸿蒙、麒麟、鲲鹏……这是属于中华的浪漫
  10. 三元平衡系统与反物质研究
  11. 参加第八届中国软件杯大学生软件设计大赛如何准备?以课工场为例!
  12. SpringBoot启动失败:出现错误——HikariPool-1 - Shutdown initiated...后立即出现 HikariPool-1 - Shutdown completed.
  13. Redis-6.2.* 版本配置文件redis.conf详解
  14. 基于STM32F4的智能门锁系统
  15. Vue密码验证:密码必须由大写字母、小写字母、数字、特殊符号中的2种及以上类型组成
  16. 我给游戏服务器端开发的一些建议
  17. 学WEB前端开发,自学还是培训靠谱
  18. .net core 实现微信登陆
  19. 【javaScript】学完js基础,顺便把js高级语法学了(尚硅谷视频学习笔记)
  20. 软件构造课程心得——软件构造实验二(Lab2)

热门文章

  1. JZOJ 3808. 【NOIP2014模拟8.25】道路值守
  2. python获取当前时间代码_python当前时间格式化代码
  3. matlab计算斜方差_协方差与协方差矩阵(附Matlab实现)
  4. html右侧隐藏功能区,html – CSS功能区上的三角形阴影
  5. mysql 5.5 barracuda_MySQL Antelope和Barracuda的区别分析
  6. 为什么薄膜干涉的厚度要很小_薄膜干涉的薄膜为什么不能太厚?1.这里的厚是用什么来衡量的?2.假如一个厚为1mm的薄膜,是否薄?...
  7. CVPR 2020 HAN:《Hypergraph Attention Networks for Multimodal Learning》论文笔记
  8. 最短路上的统计(Floyd)
  9. Codeforces 1375H Set Merging (分块)
  10. Oracle 创建,查询,删除 job