registFlag = 0; }
msgG = client.SendReceive(msg); //对登录验证结果给出登录响应 switch (msgG.msgCommand) {
caseMsgCommand.Logined: Login_OK(); break;
caseMsgCommand.Logining:
MessageBox.Show(\用户名或密码不正确\); registFlag = 1; break; default:
MessageBox.Show(\); break; } }
catch(Exception ex) {
MessageBox.Show(ex.Message); } }
privatevoid Login_OK() {
FriendList friList = newFriendList(); Hide();
friList.Activate(); friList.Visible = false;
if (friList.ShowDialog(this) == DialogResult.Cancel) {
friList.Dispose(); TCPSocket client = newTCPSocket(); client.ShutSocket(); Close(); } }
privatevoid button_Quit_Click(object sender, EventArgs e) {
TCPSocket client = newTCPSocket(); client.ShutSocket(); Close(); }
b.注册界面:
23
privatevoid button_register_Click(object sender, EventArgs e) {
if (tb_Age.Text == \ || tb_UserName.Text == \ || tb_PassWord.Text == \) {
MessageBox.Show(\注册信息不能留空\); return; }
//赋值注册信息
ClassMessage msg = newClassMessage(); msg.UserName = tb_UserName.Text; msg.PassWord = tb_PassWord.Text;
msg.Sex = radioB_Boy.Checked ? \男\ : \女\; msg.Age = int.Parse(tb_Age.Text); msg.msgCommand = MsgCommand.Registering; //发送注册信息并获取注册结果 TCPSocket client = newTCPSocket(); ClassMessage msgG = newClassMessage(); client.Connection();
msgG = client.SendReceive(msg); //给出对注册结果响应 switch (msgG.msgCommand) {
caseMsgCommand.Registered: MessageBox.Show(\注册成功\);
DialogResult = DialogResult.OK; break;
caseMsgCommand.Registering:
MessageBox.Show(\该用户名已被使用\); break; default:
MessageBox.Show(\); break; } }
privatevoid button_Cancel_Click(object sender, EventArgs e) {
DialogResult = DialogResult.Cancel; }
c.好友列表界面:
privatevoid FriendList_Load(object sender, EventArgs e) {
Hide();
//初始化(显示用户及好友信息) ShowMymsg();
24
//初始信息添加完毕显示窗体 Show(); }
privatevoid ShowMymsg() {
//显示用户名
BS_Client CliLogin = newBS_Client();
label_userName.Text = CliLogin.GetUserName(); CliLogin.ClearUserName(); //获取相应信息前变量定义
TCPSocket client = newTCPSocket(); ClassMessage msgG = newClassMessage(); ClassMessage msg = newClassMessage(); msg.UserName = label_userName.Text; //获取并显示用户信息
msg.msgCommand = MsgCommand.Mymsggeting; msgG = client.SendReceive(msg); switch (msgG.msgCommand) {
caseMsgCommand.Mymsggot: if (msgG.Face != null) {
Image header = SetByteToImage(msgG.Face); pb_headSculpture.Image = header; } else
{
pb_headSculpture.Image = iList.Images[0]; } if (msgG.Sign == 0)
label_State.Text = \在线\; break; default:
MessageBox.Show(\); break; }
//向列表中添加好友信息 AddFriends(client, msg); }
privatevoid AddFriends(TCPSocket client, ClassMessage msg) {
int i = 0, j; //循环参数
//数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度 LV_Friends.BeginUpdate();
25
LV_Friends.View = View.Details; //添加列表头
LV_Friends.Columns.Add(\我的好友\, 190, HorizontalAlignment.Left); int temp = 1;
ClassMessage[] msgF = newClassMessage[256]; FriendMsg[] friendsMsg = newFriendMsg[256]; //获取并显示用户好友信息
msg.msgCommand = MsgCommand.FriendList; //获取好友信息
ClassMessage msgG = client.SendReceive(msg); //获取信息列表 while (true) {
if (msgG.msgCommand != MsgCommand.FriendList) { break; }
msgF[i++] = msgG; //循环接收好友信息
msgG = client.ReceiveMsg(); }
//获取并显示好友信息
for (j = i - 1; j >= 0; j--) {
friendsMsg[j]=
(FriendMsg)newClassSerializers().DeSerializeBinary(newMemoryStream(msgF[j].Data)); if (friendsMsg[j].Face == null) {
temp = index - 1; index = 0; } else {
Image image = SetByteToImage(friendsMsg[j].Face);
imageList1.Images.Add(friendsMsg[j].UserName, image); }
LV_Friends.Items.Add(friendsMsg[j].UserName, index); index = ++temp; }
//结束数据处理
LV_Friends.EndUpdate(); }
privatevoid button_Search_Click(object sender, EventArgs e) {
26
if (textBox_Search.Text == \) {
MessageBox.Show(\好友名称不能为空\); return; }
SearchFriends searchfri = newSearchFriends(textBox_Search, label_userName); searchfri.Activate(); searchfri.Visible = false;
if (searchfri.ShowDialog(this) == DialogResult.OK) {
searchfri.Dispose(); textBox_Search.Text = \; //清空listview
LV_Friends.Clear(); //更新好友列表
TCPSocket client = newTCPSocket(); ClassMessage msg = newClassMessage(); msg.UserName = label_userName.Text; AddFriends(client, msg); }
else searchfri.Dispose(); }
privatevoid StartChat() {
Hide();
Chat CwithFri = newChat(LV_Friends.Items[LV_Friends.SelectedIndices[0]], label_userName.Text); CwithFri.Activate(); CwithFri.Visible = false;
if (CwithFri.ShowDialog(this) == DialogResult.Cancel) {
CwithFri.Dispose(); Show(); } }
privatevoid ItemDoubleClick(object sender, MouseEventArgs e) {
StartChat(); }
privatevoid删除好友ToolStripMenuItem_Click(object sender, EventArgs e) {
TCPSocket client = newTCPSocket(); ClassMessage msgG = newClassMessage(); ClassMessage msg = newClassMessage();
27