//界面添加用户 private void AddUser(UserInfo mode) { PictureBox user = new PictureBox(); user.Name = "user" + mode.Id.ToString(); user.Tag = mode; user.Size = new Size(300, 120); if (intUserLeft < user.Width * 3 + intg * 2) intUserLeft += intg; else { intUserLeft = intg; intUserTop += intg + user.Height; } user.Location = new Point(intUserLeft, intUserTop); intUserLeft += 300; user.BackColor = mode.Id == m_UserId ? Color.DarkSeaGreen : Color.LightSteelBlue; user.Paint += new PaintEventHandler(user_Paint); user.MouseEnter += new EventHandler(user_MouseEnter); user.MouseLeave += new EventHandler(user_MouseLeave); user.DoubleClick += new EventHandler(user_DoubleClick); pan_users.Controls.Add(user); }
/// <summary> /// 根据ID获取用户对象(不能获取自己的) /// </summary> /// <param name="id"></param> /// <returns></returns> private UserInfo GetUserInfoByUserId(int id) { UserInfo mode = null; if (id == m_UserId) { mode = new UserInfo(); mode.Id = id; mode.Name = m_UserName; } foreach (UserInfo u in users) { if (u.Id == id) { mode = u; break; } } return mode; }
/// <summary> /// 获取在线好友数据 /// </summary> public void getOnlineFriendInfos() { users.Clear(); InitUserPanl(); UserInfo selfUserItem = new UserInfo(); selfUserItem.Id = m_UserId; selfUserItem.Name = m_UserName; StringBuilder str = new StringBuilder(); AnyChatCoreSDK.QueryUserState(selfUserItem.Id, AnyChatCoreSDK.BRAC_USERSTATE_INTERNETIP, str, 15); selfUserItem.Ip = str.ToString(); AddUser(selfUserItem); int num=0; AnyChatCoreSDK.GetUserFriends(null,ref num); int[] friendIds = new int[num]; AnyChatCoreSDK.GetUserFriends(friendIds, ref num); for (int i = 0; i < friendIds.Length;i++ ) { int onlineStatus = 0; int friendId = friendIds[i]; AnyChatCoreSDK.GetFriendStatus(friendId, ref onlineStatus); Log.SetLog("GetFriendStatus: " + "用户id:" + friendId + "在线状态:" + onlineStatus); if(onlineStatus==USER_OFFLINE) { continue; } UserInfo userItem = new UserInfo(); StringBuilder friendInfo = new StringBuilder(30); int lenth = 30; userItem.Id = friendId; AnyChatCoreSDK.GetUserInfo(friendId, USERDATA_USERNAME, friendInfo, lenth); string userName = friendInfo.ToString(); userItem.Name = friendInfo.ToString(); AnyChatCoreSDK.GetUserInfo(friendId, USERDATA_USERADRESSIP, friendInfo, lenth); string userIp = friendInfo.ToString(); userItem.Ip = friendInfo.ToString(); bool ishave = false; foreach (UserInfo u in users) { if (u.Id == userItem.Id) { ishave = true; break; } } if (!ishave) users.Add(userItem); AddUser(userItem); } }
//界面移除用户 private void RemoveUser(UserInfo mode) { //移除用户 foreach (Control c in pan_users.Controls) { UserInfo u = c.Tag as UserInfo; if (u.Id == mode.Id) { pan_users.Controls.Remove(c); break; } } //整理其他用户坐标 intUserLeft = 0; intUserTop = 30; foreach (Control c in pan_users.Controls) { if (intUserLeft < 300 * 3 + 30 * 2) intUserLeft += intg; else { intUserLeft = intg; intUserTop += intg + 120; } c.Location = new Point(intUserLeft, intUserTop); intUserLeft += 300; } }