版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要作为除电视、报纸、广播之外的第四大媒体,互联网不仅成为人们获取新闻信息的主要来源,更成为了人们闲暇之余的一种休闲手段。随着互联网技术的发展,各种各样基于网络的应用也随之诞生,网络聊天工具便是其中的一种。本文采用Visual Studio 2015+MyMysql开发环境,结合WinForms、ADO.NET等多种技术,实现了一个类似QQ的网络聊天工具,并在WINDOWS平台上加以了实现。通过C#语言进行网络编程,通过公共的数据库交换各种信息,实现了人性化的界面设计与功能设计。软件经过测试,满足现代人们即时通信的需求,达到预期的设计效果,对网络聊天工具的人性化设计具有一定的现实意义,同时也
2、为其他相关项目的设计提供了参考。关键词:网络聊天工具 C# 即时通信 数据库 人性化目 录摘 要I第一章 引言12.3 WinForms窗体设计技术52.4 C/S结构52.5 ADO.NET技术62.6 MyMysql数据库简介6第三章 需求分析83.1 可行性研究83.2 用户需求83.3 性能需求83.4 系统功能需求9第四章 系统设计104.1 系统功能结构104.2 系统模块划分104.3 系统整体流程图11第五章 详细设计125.1 登录界面设计125.2 注册界面设计165.3 主界面设计205.4 查找/添加好友界面设计245.5 聊天界面设计295.6 个人设置界面设计345
3、.7 头像选择界面设计365.8 系统消息界面设计37结束语40参考文献41附录一42附录二43第一章 引言1.1 系统开发背景当今社会已进入信息时代,信息是当今世界最重要的资源之一,它与物质及能源一起构成了三大能源支柱。信息高速公路是信息社会的基础设施,而互联网则是信息高速公路的重要组成部分。在互联网相当普及的今天,你们对网络的依赖越来越大,越来越离不开网络,网络聊天更是成为了人们的“家常便饭”。通过网络聊天工具,人们足不出户就可进行闲聊甚至工作会谈,极大地方便了人们的日常生活与工作需求。常用的网络聊天工具主要是QQ与MSN。MSN主要用于国际,而国内的主流网络聊天工具是QQ。QQ有着非常良
4、好的操作界面,和强大的通信功能,集娱乐、生活和工作于一身。随着技术的进步,QQ不仅可以通过宽带网在PC上使用,通过手机也可以实现与好友、同事通信。而无论是QQ还是MSN,都存在一个很大的问题广告。每次登陆后时不时会弹出一些广告窗口,绝大多数网友都对此感觉厌烦。因此在本次论文的激励下,我决定设计一个类似QQ并且无垃圾信息的网络聊天工具,此外也希望通过本次论文能更好地学习与掌握网络软件编程知识。1.2 聊天软件的开发目标本论文的主要工作是设计一个类似QQ的网络即时聊天工具,主要是采用WinForms+ADO.NET技术实现。软件功能主要包括用户注册、用户登录、用户间聊天、查找/添加好友、个人设置等
5、。客户端通过公共的数据库交换信息,消息的发送和读取都是通过操作数据库来完成的。在程序中采用定时扫描数据库的方式来查找未读消息。文章首先简介涉及的相关技术与基本知识,然后阐述本软件的功能,再具体分析软件各个模块的功能及具体实现方法。第二章 开发环境与关键技术简介2.1 C#简介C#(读作C Sharp)是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言, 是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C+
6、的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的, 而且它是微软公司.NET windows网络框架的主角。C#最引人入胜的地方是它和Java的不同,而不是相似的地方:中间代码微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地。微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码。它
7、也明白许多,如果不是大多数的话,程序员认为Java程序要不可避免的比C编写的任何东西都要慢。而这种实现方式决定了基于MSIL的程序(指的是用C#,Visual Basic,Managed C+-C+的一个符合CLS的版本-等语言编写的程序)将在性能上超过解释性的Java代码。当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布。但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同。象C#是编译语言而Java是解释性的,之类的声明只是商业技巧。Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码。命名空间中的申明
8、当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类。同在这个命名空间里(在类的外面)你还有可能声明接口,枚举类型和结构体。必须使用using关键字来引用其他命名空间的内容。 基本的数据类型C#拥有比C,C+或者Java更广泛的数据类型。这些类型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal。象Java一样,所有这些类型都有一个固定的大小。又象C和C+一样,每个数据类型都有有符号和无符号两种类型。与Java相同的是,一个字符变量包含的是一个16位的Unicode字符。C#新的数据类型是dec
9、imal数据类型,对于货币数据,它能存放28位10进制数字。 两个基本类一个名叫object的类是所有其他类的基类。而一个名叫string的类也象object一样是这个语言的一部分。作为语言的一部分存在意味着编译器有可能使用它,无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它。参数传递方法可以被声明接受可变数目的参数。缺省的参数传递方法是对基本数据类型进行值传递。ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值。out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值。与COM的集成C#对Windows
10、程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术。实际上,最终有可能在任何.NET语言里编写COM客户和服务器端。C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件。这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用用任何.NET语言子类化。代理和反馈一个代理对象包括了访问一个特定对象的特定方法所需的信息。只要把它当成一个聪明的方法指针就行了。代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用。一个
11、反馈方法是代理的特例。event关键字用在将在事件发生的时候被当成代理调用的方法声明。2.2 .NET Framework简介.NET Framework是支持生成、运行下一代应用程序和XML Web Services的内部Windows组件,它简化了在高度分布式Internet环境中的应用程序开发,.NET Framework可实现的功能如下:l 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。l 提供一个将软件部署和版本控制冲突最小化的代码执行环境。l 提供一个可提高代码(包括由未知的或不完全受信任的第三
12、方创建的代码)执行安全性的代码执行环境。l 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。l 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。l 按照工业标准生成所有通信,以确保基于 .NET Framework 的代码可与任何其他代码集成。.NET Framework 具有两个主要组件:公共语言运行库和.NET Framework类库。公共语言运行库是 .NET Framework 的基础。您可以将公共语言运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的
13、类型安全以及可提高安全性和可靠性的其他形式的代码准确性。这类似于Java的虚拟机。事实上,代码管理的概念是公共语言运行库的基本原则。以公共语言运行库为目标的代码称为托管代码,而不以公共语言运行库为目标的代码称为非托管代码。.NET Framework 的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (GUI) 应用程序,也包括基于 ASP.NET 所提供的最新创新的应用程序(如 Web 窗体和 XML Web services)。.NET Framework 可由非托管组件承载,这些组件将公共语言运行库
14、加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境。.NET Framework 不但提供若干个运行库宿主,而且还支持第三方运行库宿主的开发。2.3 WinForms窗体设计技术2.4 C/S结构C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Serve
15、r 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S结构是当前数据库应用程序中极为流行的一种方式。尤其是网络技术的发展,使得当前很多系统都采用这种方式进行构造,其最大的优点是将计算机工作任务分别由客户端和服务器端来共同完成,这样有利于充分合理的利用系统资源。另外它的服务器端还可以将信息集中起来,任何客户机都可以通过访问服务器而获得所需的信息。Client/Server模型最终可归结为一种“请求/应答”关系。一个请求总是首先被客户发出,然后服务器
16、总是被动地接收请求,返回客户需要的结果。在客户发出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进程被“唤醒”并且为客户提供服务,对客户的请求做出所需要的应答,如图2-1所示。图2-1 客户机服务器通信结构示图2.5 ADO.NET技术ADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为Data Providers,并且通常是以与之交互的协议和数据源的类型来命名的。然而无论使用什么样的D
17、ata Provider,你将使用相似的对象与数据源进行交互。MysqlConnection对象管理与数据源的连接。MysqlCommand对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用MysqlDataReader。如果想使用断开数据,使用DataSet并实现能进行读取或者写入数据源的MysqlDataAdapter。2.6 MyMysql数据库简介 MyMysql是一个关系型数据库管理系统,由瑞典MyMysql AB 公司开发,目前属于Oracle旗下产品。MyMysql 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MyMysql是最好的 R
18、DBMS (Relational Database Management System,关系数据库管理系统) 应用软件。 MyMysql所使用的 Mysql 语言是用于访问数据库的最常用标准化语言。MyMysql 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MyMysql 作为网站数据库。 与其他的大型数据库,例如Oracle、DB2、Mysql Server等相比,MyMysql 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MyMysql提供的功能已经绰绰有
19、余,而且由于 MyMysql是开放源码软件,因此可以大大降低总体拥有成本 MyMysql 可应用于多种语言,包括 PERL, C, C+, JAVA 和 PHP。 在这些语言中,MyMysql 在 PHP 的 web 开发中是应用最广泛。 MyMysql是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。本网络聊天软件的开发环境主要使用MyMysql。Editionnavicat for myMysql(32位和64 位) Navicat for MyMysql是一套管理和开发MyMysql或MariaDB的理想解决方案
20、,支持单一程序,可同时连接到MyMysql和MariaDB。这个功能齐备的前端软件为数据库管理、开发和维护提供了直观而强大的图形界面,给MyMysql或MariaDB新手以及专业人士提供了一组全面的工具。 Navicat for MyMysql是一款强大的 MyMysql 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。Navicat for MyMysql 基于Windows平台,为 MyMysql 量身订作,提供类似于 MyMysql 的管理界面工具。此解决方案的出现,将解放 PHP、J2EE 等程序员以及数据库设计者、管理者的大脑,降低开发成
21、本,为用户带来更高的开发效率。 Navicat for MyMysql使用了极好的图形用户界面(GUI),可以用一种安全和更为容易的方式快速和容易地创建、组织、存取和共享信息。 用户可完全控制 MyMysql 数据库和显示不同的管理资料,包括一个多功能的图形化管理用户和访问权限的管理工具,方便将数据从一个数据库转移到另一个数据库中(Local to Remote、Remote to Remote、Remote to Local),进行档案备份。 Navicat for MyMysql支持 Unicode,以及本地或远程 MyMysql 服务器多连线,用户可浏览数据库、建立和删除数据库、编辑数据
22、、建立或执行 Mysql queries、管理用户权限(安全设定)、将数据库备份/复原、汇入/汇出数据(支援 CSV, TXT, DBF 和 XML 档案种类)等。软件与任何 MyMysql第三章 需求分析3.1 可行性研究本软件只做开发学习使用,所以暂且不考虑经济成本及盈利问题。开发所需要的平台已经搭建好,并做好了充分的前期准备工作,其次因为本程序的平台将基于WINDOWS,将要使用网络通信技术,而WINDOWS有完善成熟的网络通信接口,以及与C#开发环境的严密契合能力,加之相类似的更大规模的网络聊天工具产品也已有例在先,所以这个程序的开发在技术上是完全可行的。3.2 用户需求随着互联网的普
23、及,网络聊天工具已经成为了人们日常生活中不可缺少的一部分。根据人们对聊天工具的需求,主要可以概括为以下几点:1、 操作简单方便、界面简洁美观;2、 能够注册新用户;3、 拥有熟悉的聊天界面;4、 能够查找/添加好友;5、 能够进行个人设置;6、 系统运行稳定、安全可靠。3.3 性能需求首先要求程序要完全可靠,可以应付各种由于系统问题产生的错误,比如初始网络失败等。要求提前设想到类似的尽可能多的可能发生的事件,做出相应的应对措施,并向用户提交简单易懂清晰明白的提示信息。程序要有良好的容错性,当用户进行非法操作时或者系统本身出现问题时要能以最好的方式退出程序,避免发生程序假死现象。开发文档要有好的
24、易理解性,如果系统又要交由别人接手开发,或者自己由于种种原因需要进行二次开发,那么要保证以后能够清晰的理解整个系统的设计思路以及实现细节。要求程序对所运行之系统的硬件条件要求尽可能低,运行时内存占用尽可能小,响应速度要尽可能快。并且不发生内存泄漏之类影响系统运行的错误事件。并且要求易于维护及扩展。所以应该采用模块化开发,各个模块之间不要有太多的耦合,以免维护困难。3.4 系统功能需求这个程序要实现的功能如下:1) 程序启动之后就能直接进入登陆界面,输入错误时会提示。2) 程序启动之后,检测是否有网络连接,有则登录,无则提示没有网络。3) 登陆界面有注册新用户选项,点击进入注册界面。4) 注册成
25、功后会提示自动生成的QQ号码。5) 登陆后进入主界面,用户可以添加好友,可以直接查找,也可以按条件查找,还可以查看所有用户。6) 当双击列表中某个用户头像的时候,要弹出聊天对话框,可以在其中编辑要发送的聊天信息,并进行发送。7) 聊天界面要人性化,下面是发送框,上面对方发来的上一条聊天记录。8) 可以修改自己的个人资料,也可以更换头像。第四章 系统设计4.1 系统功能结构基于C#的网络聊天软件更 换 头 像 个 人 设 置用 户 登 录好 友 列 表发 送 消 息 删 除 好 友 添 加 好 友接 收 消 息 查 找 好 友用 户 注 册图4-1 系统功能结构4.2 系统模块划分登录模块:实现
26、用户登录功能。在没有账号的情况下可以选择进入注册新用户界面。注册模块:实现注册新用户功能。注册信息包括必填基本资料与选填资料。主模块:实现列表功能。列表包括好友列表与陌生人列表。通过主界面可以进行聊天功能,也可以打开查找/添加好友功能与个人设置功能等。聊天模块:实现发送消息与接收消息功能。通过公共的数据库交换信息,消息的发送和读取都是通过操作数据库来完成的。在程序中采用定时扫描数据库的方式来查找未读消息。也能实现删除好友功能。查找/添加好友模块:实现查找好友功能与添加好友功能。主要方法有精确查找、按条件查找,与查看所有用户。个人设置模块:实现修改个人资料。更换头像模块:实现更换用户头像。系统消
27、息模块:实现添加好友信息的读取。4.3 系统整体流程图该网络聊天工具系统整体流程图如图4-2所示:登录成功主界面聊天界面/个人设置界面/查找添加好友界面NYYNNY显示号码注册成功合法?输入检查注册登录验证输入登录数据已注册?用 户图4-2 系统整体流程图第五章 详细设计5.1 登录界面设计当用户运行程序时,首先进入的是登录界面,如图5-1所示:图5-1 登录界面如果没有账号,则单击“注册新用户”标签,可以打开注册界面;如果有已注册的账号,则在输入账号与密码后,点击“登录”按钮,可以打开主界面。如果输入有误,则出现图5-2所示界面:图5-2 输入错误程序也不允许在账号或密码处输入空格字符,如有
28、此情况,则会出现图5-3与图5-4所示界面:图 5-3 未输入账号图5-4 未输入密码当点击“登录”按钮时,则触发登录按钮事件,其处理流程图如图5-5所示:用 户输入登录数据扫描数据库中的Users表有该用户且密码正确?登录成功主界面YN图5-5 登录事件流程图其中登录按钮的代码实现如下:/ 登录按钮事件处理 private void btnLogin_Click(object sender, EventArgs e) bool error = false; / 标志在执行数据库操作的过程中是否出错 / 如果输入验证成功,就验证身份,并转到相应的窗体 if (ValidateInput() i
29、nt num = 0; / 数据库操作结果 try / 查询用的Mysql语句 string Mysql = string.Format(SELECT COUNT(*) FROM Users WHERE Id=0 AND LoginPwd = 1, int / 创建Command 对象 MysqlCommand command = new MysqlCommand(Mysql, DBHelper.connection); DBHelper.connection.Open(); / 打开数据库连接 num = Convert.ToInt32(command.ExecuteScalar(); ca
30、tch (Exception ex) error = true; Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); / 关闭数据库连接 if (!error & (num = 1) / 验证通过 / 设置登录的用户号码 UserHelper.loginId = int / 创建主窗体 MainForm mainForm = new MainForm(); mainForm.Show(); / 显示窗体 this.Visible = false; / 当前窗体不可见 else MessageBox.Show(输
31、入的用户名或密码有误!, 登录提示, MessageBoxButtons.OK, MessageBoxIcon.Error); / 用户输入验证 private bool ValidateInput() / 验证用户输入 if) MessageBox.Show(请输入登录的号码, 登录提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txtLoginId.Focus(); return false; else if) MessageBox.Show(请输入密码, 登录提示, MessageBoxButtons.OK, MessageB
32、oxIcon.Information); txtLoginPwd.Focus(); return false; return true; 5.2 注册界面设计当在登录界面点击“注册新用户”标签时,将打开注册界面,如图5-6所示:图5-6 注册界面 其中基本资料为必填资料,详细资料为选填资料。在用户输入完资料后,点击“确认注册”按钮进行注册。其间会对相关的输入进行检查,如果输入不符合规范,则不允许注册,不会向数据库插入记录,并会提示错误原因。如果输入正确,则向数据库插入一条用户记录,在数据库中自动生成一个新的登录号码(Users表的Id字段),以消息框的形式告诉用户申请成功的号码。其流程图如图5
33、-7所示:NY用户返回登录界面注册成功并显示号码向数据库中添加记录合法?提示不合法原因检查合法性输入注册信息自动添加星座选项与血型选项打开注册界面图5-7 注册界面流程图其中确认注册按钮的代码实现如下:/ 点击注册,向数据库添加记录 private void btnRegist_Click(object sender, EventArgs e) / 输入验证通过,就插入记录到数据库 if (ValidateInput() int myQQNum = 0; / QQ号码 string message; / 弹出的消息 string sex = rdoMale.Checked ? rdoMale.
34、Text : rdoFemale.Text; / 获得选中的性别 string Mysql = ; / 查询用的Mysql语句 int starId; / 星座Id int bloodTypeId; / 血型Id bool error = false; / 操作数据库是否出错 / 根据星座和血型的选择来分情况确定Mysql语句 if (cboStar.Text != & cboBloodType.Text != ) / 获得星座的Id starId = GetStarId(); / 获得血型的Id bloodTypeId = GetBloodType(); Mysql = string.For
35、mat(INSERT INTO Users (LoginPwd, NickName, Sex, Age, Name, StarId, BloodTypeId) values (0,1,2,3,4,5,6),int else if (cboStar.Text != & cboBloodType.Text = ) / 获得星座的Id starId = GetStarId(); Mysql = string.Format(INSERT INTO Users (LoginPwd, NickName, Sex, Age, Name, StarId) values (0,1,2,3,4, 5),int e
36、lse if (cboStar.Text = & cboBloodType.Text != ) / 获得血型的Id bloodTypeId = GetBloodType(); Mysql = string.Format(INSERT INTO Users (LoginPwd, NickName, Sex, Age, Name, BloodTypeId) values (0,1,2,3,4, 5),int else Mysql = string.Format(INSERT INTO Users (LoginPwd, NickName, Sex, Age, Name) values (0,1,2,
37、3,4),int try / 创建Command 对象 MysqlCommand command = new MysqlCommand(Mysql, DBHelper.connection); DBHelper.connection.Open(); / 打开数据库连接 int result = command.ExecuteNonQuery(); / 执行插入命令 if (result = 1) Mysql = SELECT Identity FROM Users; / 查询新增加的记录的标识号 command.CommandText = Mysql; / 重新指定Command 对象的Mys
38、ql 语句 myQQNum = Convert.ToInt32(command.ExecuteScalar(); / 强制类型转换会出错 message = string.Format(注册成功!你的MyQQ号码是0, myQQNum); else message = 注册失败,请重试!; catch (Exception ex) error = true; message = 服务器出现意外错误!请稍候再试!; Console.WriteLine(ex.Message); finally DBHelper.connection.Close(); / 关闭数据库连接 / 显示注册结果 if (
39、error) MessageBox.Show(message, 注册失败, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show(message, 注册结果, MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); 5.3 主界面设计当用户输入正确的登录信息并登录后,出现图5-8所示的主界面:图5-8 主界面登陆后在“我的好友”列表中显示当前好友列表,包括好友的头像和昵称。在主界面的顶部要显示当前登陆的用户头像,昵称和登录账号。当有新的聊天
40、消息时候。发来的消息的好友头像要闪动,双击头像弹出“聊天”窗口后,头像停止闪动,当有添加好友请求消息时,窗体底部的好友请求验证按钮要闪烁,单击该按钮弹出“系统消息”窗体后,按钮停止闪烁。通过主窗体下方的按纽打开“查找/添加好友”窗体,“个人信息”窗口,“系统消息”窗口,也可刷新好友列表和退出程序。通过右键菜单能够切换大小头像。能够把陌生人转为好友,能够删除一个好友或陌生人,如图5-9所示:图5-9 右键功能显示好友列表的控键可以用提供的第三方控键sidebar,该控键的命名空间为Aptech.ui。Sidebar是一个能够以分组形式显示列表的控件,能够实现类似QQ的好友分组功能,sidebar
41、控键中可以包含很多组(sbgroup),每个组可以包含很多sidebar项(sbitem)。Sidebar的列表项有两种显示方式:大图标和小图标,它可以通过它的view属性来设置。Sidebar 控件还有一个imagelist 属性,可以和一个imagelist控件关联,列表项中显示的图片就是存放在imagelist控件中的图片。可以通过Sidebar项(sbitem)的imageindex来指定图片在imagelist控件中的索引。其中加载窗体时的代码如下:/ 窗体加载时发生 private void MainForm_Load(object sender, EventArgs e) / 工
42、具栏的消息图标 tsbtnMessageReading.Image = ilMessage.Images0;/ 显示个人的信息 ShowSelfInfo();/ 添加 SideBar 的两个组 sbFriends.AddGroup(我的好友); sbFriends.AddGroup(陌生人);/ 向我的好友组中添加我的好友列表 ShowFriendList(); 定时扫描数据库读取未读信息的代码如下:/ 定时扫描数据库,找到未读消息 private void tmrMessage_Tick(object sender, EventArgs e) ShowFriendList(); / 刷新好友
43、列表 int messageTypeId = 1; / 消息类型 int messageState = 1; / 消息状态 / 找出未读消息对应的好友Id string Mysql = string.Format( SELECT Top 1 FromUserId, MessageTypeId, MessageState FROM Messages WHERE ToUserId=0 AND MessageState=0, UserHelper.loginId); MysqlCommand command; / 消息有两种类型:聊天消息、添加好友消息 try command = new Mysql
44、Command(Mysql, DBHelper.connection); DBHelper.connection.Open(); MysqlDataReader dataReader = command.ExecuteReader(); / 循环读出一个未读消息 if (dataReader.Read() this.fromUserId = (int)dataReaderFromUserId; messageTypeId = (int)dataReaderMessageTypeId; messageState = (int)dataReaderMessageState; dataReader.Close(); catch (Exception ex) Console.W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024各类设备采购协议总览
- 2024年新公司聘用劳动协议样式
- 2024年场地调查委托协议模板
- 2024届安徽江南十校高三数学试题毕业班4月质量检查试题
- 2024年劳务合作及就业保障协议
- 化信息技术硬件采购协议范本
- 2024年智能设备部署与维护协议
- 2024年蔬菜产业链战略合作协议
- DB11∕T 1603-2018 睡莲栽培技术规程
- 2024专业新风系统安装服务协议模板
- 建筑施工作业活动风险分级管控清单
- 基于DCS的温度控制系统的设计与应用(共35页)
- XX区畜禽养殖屠宰无害化处理企业洗消中心建设项目实施方案.docx
- 大猫英语分级阅读 六级1 A Letter to New Zealand课件
- 科创板知识测评含答案
- 带电作业规程PPT
- 第几和几专项训练
- 北京市海淀区2021-2022学年七年级上学期期末考试语文试卷(word版含答案)
- (完整版)心理健康教育五年工作规划
- 四川省工程建设统一用表(新版监理单位用表)
- 作业流程分析ppt课件
评论
0/150
提交评论