QQ代码.docx
- 文档编号:23141644
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:85
- 大小:206.94KB
QQ代码.docx
《QQ代码.docx》由会员分享,可在线阅读,更多相关《QQ代码.docx(85页珍藏版)》请在冰豆网上搜索。
QQ代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingAptech.UI;
usingSystem.Data.SqlClient;
usingSystem.Media;
namespaceMyQQProgram
{
///
///登录主窗体
///
publicpartialclassMainForm:
Form
{
intfromUserId; //消息的发起者
intfriendFaceId;//发消息的好友的头像Id
intmessageImageIndex=0;//工具栏中的消息图标的索引
publicMainForm()
{
InitializeComponent();
}
privatevoidMainForm_Load(objectsender,EventArgse)
{
//工具栏的消息图标
tsbtnMessageReading.Image=ilMessage.Images[0];
//显示个人的信息
ShowSelfInfo();
//添加SideBar的两个组
sbFriends.AddGroup("我的好友");
sbFriends.AddGroup("陌生人");
//向我的好友组中添加我的好友列表
ShowFriendList();
}
#region"cmsFriendList控件部分"
//显示大、小头像视图切换
privatevoidtsmiView_Click(objectsender,EventArgse)
{
if(sbFriends.View==SbView.LargeIcon)
{
sbFriends.View=SbView.SmallIcon;
tsmiView.Text="显示大头像";
}
elseif(sbFriends.View==SbView.SmallIcon)
{
sbFriends.View=SbView.LargeIcon;
tsmiView.Text="显示小头像";
}
}
//删除好友
privatevoidtsmiDelete_Click(objectsender,EventArgse)
{
DialogResultresult;//对话框结果
intdeleteResult=0;//操作结果
if(sbFriends.SeletedItem!
=null)
{
result=MessageBox.Show("确实要删除该好友吗?
","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(result==DialogResult.Yes)//确认删除
{
if(sbFriends.VisibleGroup==sbFriends.Groups[0])
{
DBHelper.connection.Open();
stringsql=string.Format("DELETEFROMFriendsWHEREHostId={0}ANDFriendId={1}",UserHelper.loginId,Convert.ToInt32(sbFriends.SeletedItem.Tag));
SqlCommandcmd=newSqlCommand(sql,DBHelper.connection);
intresults=-1;
try
{
results=Convert.ToInt32(cmd.ExecuteScalar());
}
catch(Exceptionex)
{
MessageBox.Show(ex.Message);
}
finally
{
DBHelper.connection.Close();
}
if(deleteResult==1)
{
MessageBox.Show("好友已删除","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
sbFriends.SeletedItem.Parent.Items.Remove(sbFriends.SeletedItem);
}
}
else
{
MessageBox.Show("好友已删除","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
sbFriends.SeletedItem.Parent.Items.Remove(sbFriends.SeletedItem);
}
}
}
}
//将选中的人加为好友
privatevoidtsmiAddFriend_Click(objectsender,EventArgse)
{
intresult=0;//操作结果
DBHelper.connection.Open();
stringsql=string.Format("INSERTINTOFriends(HostId,FriendId)VALUES({0},{1})",UserHelper.loginId,Convert.ToInt32(sbFriends.SeletedItem.Tag));
SqlCommandcmd=newSqlCommand(sql,DBHelper.connection);
result=Convert.ToInt32(cmd.ExecuteNonQuery());
if(result==1)
{
MessageBox.Show("添加成功!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
sbFriends.SeletedItem.Parent.Items.Remove(sbFriends.SeletedItem);
ShowFriendList();//更新好友列表
}
else
{
MessageBox.Show("添加失败,请稍候再试!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
#endregion
#region"tsOperation控件部分"
//显示个人信息窗体
privatevoidtsbtnPersonalInfo_Click(objectsender,EventArgse)
{
PersonInfoFormPersonInfoForm=newPersonInfoForm();
PersonInfoForm.mainForm=this;//将当前窗体本身传给个人信息窗体
PersonInfoForm.Show();
}
//显示查找好友窗体
privatevoidtsbtnSearchFriend_Click(objectsender,EventArgse)
{
SearchFriendFromsearchFriendForm=newSearchFriendFrom();
searchFriendForm.Show();
}
//点击更新好友列表
privatevoidtsbtnUpdateFriendList_Click(objectsender,EventArgse)
{
ShowFriendList();
}
//单击时显示请求好友消息窗体
privatevoidtsbtnMessageReading_Click(objectsender,EventArgse)
{
tmrAddFriend.Stop();//消息timer停止运行
//图片恢复正常
messageImageIndex=0;
tsbtnMessageReading.Image=ilMessage.Images[messageImageIndex];
//显示系统消息窗体
RequestFormrequestForm=newRequestForm();
requestForm.Show();
}
//退出
privatevoidtsbtnExit_Click(objectsender,EventArgse)
{
DialogResultresult=MessageBox.Show("确实要退出吗?
","操作确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(result==DialogResult.Yes)
{
Application.Exit();
}
}
#endregion
//显示右键菜单时,控制哪些菜单不可见
privatevoidcmsFriendList_Opening(objectsender,CancelEventArgse)
{
//如果没有选中的项
if(sbFriends.SeletedItem==null)
{
tsmiDelete.Visible=false;
}
else
{
tsmiDelete.Visible=true;
}
//如果选中的是陌生人,显示加为好友菜单
if(sbFriends.SeletedItem!
=null&&sbFriends.SeletedItem.Parent==sbFriends.Groups[1])
{
tsmiAddFriend.Visible=true;
}
else
{
tsmiAddFriend.Visible=false;
}
}
//双击一项,弹出聊天窗体
privatevoidsbFriends_ItemDoubleClick(SbItemEventArgse)
{
//消息timer停止运行
if(tmrChatRequest.Enabled==true)
{
tmrChatRequest.Stop();
e.Item.ImageIndex=this.friendFaceId;
}
//显示聊天窗体
ChatFormchatForm=ChatForm.GetChatForm(e.Item.Tag.ToString());
chatForm.friendId=Convert.ToInt32(e.Item.Tag);//号码
chatForm.nickName=e.Item.Text;//昵称
chatForm.faceId=e.Item.ImageIndex;//头像
chatForm.Show();
}
//可见组发生变化时,发出声音
privatevoidsbFriends_VisibleGroupChanged(SbGroupEventArgse)
{
SoundPlayerplayer=newSoundPlayer("folder.wav");
player.Play();
}
#region"三个计时器部分"
//定时扫描数据库,找到未读消息
privatevoidtmrMessage_Tick(objectsender,EventArgse)
{
ShowFriendList();//刷新好友列表
intmessageTypeId=1;//消息类型
intmessageState=1;//消息状态
DBHelper.connection.Open();
//找出未读消息对应的好友Id
stringsql=string.Format(
"SELECTTop1FromUserId,MessageTypeId,MessageStateFROMMessagesWHEREToUserId={0}ANDMessageState=0",UserHelper.loginId);
//消息有两种类型:
聊天消息、添加好友消息
SqlCommandcomm=newSqlCommand(sql,DBHelper.connection);
SqlDataReaderdataReader=comm.ExecuteReader();
//循环读出一个未读消息
while(dataReader.Read())
{
this.fromUserId=(int)dataReader["FromUserId"];
messageTypeId=(int)dataReader["MessageTypeId"];
messageState=(int)dataReader["MessageState"];
}
dataReader.Close();
//判断消息类型,如果是添加好友消息,就启动喇叭timer,让小喇叭闪烁
if(messageTypeId==2&&messageState==0)
{
SoundPlayerplayer=newSoundPlayer("system.wav");
player.Play();
tmrAddFriend.Start();
}
//如果是聊天消息,就启动聊天timer,让好友头像闪烁
elseif(messageTypeId==1&&messageState==0)
{
//获得发消息的人的头像Id
sql="SELECTFaceIdFROMUsersWHEREId="+this.fromUserId;
this.friendFaceId=Convert.ToInt32(comm.ExecuteScalar());//设置发消息的好友的头像索引
//如果发消息的人没有在列表中就添加到陌生人列表中
if(!
HasShowUser(fromUserId))
{
UpdateStranger(fromUserId);
}
SoundPlayerplayer=newSoundPlayer("msg.wav");
player.Play();
tmrChatRequest.Start();//启动闪烁头像定时器
}
DBHelper.connection.Close();
}
//控制喇叭闪烁
privatevoidtmrAddFriend_Tick(objectsender,EventArgse)
{
//反复修改它的图像
messageImageIndex=messageImageIndex==0?
1:
0;
tsbtnMessageReading.Image=ilMessage.Images[messageImageIndex];
}
//让相应的好友头像闪烁
privatevoidtmrChatRequest_Tick(objectsender,EventArgse)
{
//循环好友列表两个组中的每个item,找到发消息的好友,让他的头像闪烁
for(inti=0;i<2;i++)
{
for(intj=0;j { if(Convert.ToInt32(sbFriends.Groups[i].Items[j].Tag)==this.fromUserId) { if(sbFriends.Groups[i].Items[j].ImageIndex<100) { sbFriends.Groups[i].Items[j].ImageIndex=100;//索引为100的图片是一个空白图片 } else { sbFriends.Groups[i].Items[j].ImageIndex=this.friendFaceId; } sbFriends.Invalidate();//重新绘制 } } } } #endregion /// ///登录后显示个人的信息 /// publicvoidShowSelfInfo() { stringnickName="";//昵称 intfaceId=0;//头像索引 //取得当前用户的昵称、头像 if(DBHelper.connection.State==ConnectionState.Closed) { DBHelper.connection.Open(); } stringsql=string.Format("SELECTNickName,FaceIdFROMUsersWHEREId={0}",UserHelper.loginId); SqlCommandcomm=newSqlCommand(sql,DBHelper.connection); SqlDataReaderdataReader=comm.ExecuteReader(); if(dataReader.Read()) { if(! (dataReader["NickName"]isDBNull))//判断数据库类型是否为空 { nickName=Convert.ToString(dataReader["NickName"]); } faceId=Convert.ToInt32(dataReader["FaceId"]); } dataReader.Close(); //在窗体标题显示登录的昵称、号码 this.Text=UserHelper.loginId.ToString(); this.picFace.Image=ilFaces.Images[faceId]; this.lblLoginId.Text=string.Format("{0}({1})",nickName,UserHelper.loginId.ToString()); DBHelper.connection.Close(); } /// ///向我的好友组中添加我的好友列表 /// privatevoidShowFriendList() { //清空原来的列表 sbFriends.Groups[0].Items.Clear(); //查找有哪些好友 DBHelper.connection.Open(); stringsql=string.Format( "SELECTFriendId,NickName,FaceIdFROMUsers,FriendsWHEREFriends.HostId={0}ANDUsers.Id=Friends.FriendId", UserHelper.loginId); SqlCommandcomm=newSqlCommand(sql,DBHelper.connection); SqlDataReaderdataReader=comm.ExecuteReader(); //循环添加好友列表 while(dataReader.Read()) { //创建一个SideBar项 SbItemitem=newSbItem((string)dataReader["NickName"],(int)dataReader["FaceId"]); item.Tag=(int)dataReader["FriendId"];//将号码放在Tag属性中 //SideBar中的组可以通过数组的方式访问,按照添加的顺序索引从0开始 //Groups[0]表示SideBar中的第一个组,也就是“我的好友”组 sbFriends.Groups[0].Items.Add(item);//向SideBar的“我的好友”组中添加项 } dataReader.Close(); DBHelper.connection.Close(); } /// ///判断发消息的人是否在列表中 /// privateboolHasShowUser(intloginId) { boolfind=false;//表示是否在当前显示出的用户列表中找到了该用户 //循环SideBar中的2个组,寻找发消息的人是否在列表中 for(inti=0;i<2;i++) { for(intj=0;j { if(Convert.ToInt32(sbFriends.Groups[i].Items[j].Tag)==loginId) { find=true; } } } returnfind; } /// ///更新陌生人列表 /// privatevoidUpdateStranger(intloginId) { DBHelper.connection.Open(); //选出这个人的基本信息 stringsql="SELECTNickName,FaceIdF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QQ 代码