代码:
/Files/sherlockhua/filetransferbox.rar
/Files/sherlockhua/TransferBoxEx.rar(改进版)
实现效果图:
最近在做一个可在局域网中聊天的聊天工具,因为要支持多文件传输功能,所以显示多文件传输状态便成了一个问题。我们都用过qq,当进行多文件传输时,它可以以列表的形式把正在传输的文件信息显示出来。显示的内容有文件图标,文件名,发送或者接受文件,进度条,文件大小还有一些取消,保存之类的按钮。而且当正在传输的文件比较多,客户区显示不了时。就会出现一个滚动条,用来显示所有的发送或接收文件的信息。
好了,大概得轮廓都已经了解了。现在就可以开始着手写控件了。我们知道列表中的每一项都是一个文件信息,我们就可以把每一个文件信息作为一个类,然后在这个类之中绘制各种文件信息。自然而然,我们可以分辨出以下几个类:FileTransferItem类、FileLinkButton类、ProcessBar类。其中FileTransferItem类用来代表一个文件信息项。FileLinkButton提供类似LinkButton类的按钮功能,ProcessBar类提供进度条的功能。然而为了在正确位置进行绘制控件,就必须记下每一对象的位置。因此,我们可以用一个基类FileObject来替提供位置信息,其他的类都继承它。部分代码如下:
1/*
2 * 创建者:张华
3 * 创建日期:2008/7/8
4 * 更新日期:2008/7/8
5 * 描述:为类FileLinkButton、类FileTranferItem和类ProcessBar提供基础功能
6 * 联系方式:214140879
7 */
8using System;
9using System.Collections.Generic;
10using System.Text;
11using System.Drawing;
12using System.Drawing.Drawing2D;
13using System.Drawing.Imaging;
14using System.Xml.Serialization;
15using System.ComponentModel;
16
17namespace ZH.FileTranferBox
18{
19 [Serializable]
20 public class FileObject
21 {
22 字段
26
27 属性
148
149 构造函数
2 * 创建者:张华
3 * 创建日期:2008/7/8
4 * 更新日期:2008/7/8
5 * 描述:为类FileLinkButton、类FileTranferItem和类ProcessBar提供基础功能
6 * 联系方式:214140879
7 */
8using System;
9using System.Collections.Generic;
10using System.Text;
11using System.Drawing;
12using System.Drawing.Drawing2D;
13using System.Drawing.Imaging;
14using System.Xml.Serialization;
15using System.ComponentModel;
16
17namespace ZH.FileTranferBox
18{
19 [Serializable]
20 public class FileObject
21 {
22 字段
26
27 属性
148
149 构造函数