//返回消息时回调的方法 private void diaplayUser(Exception ee, byte[] response, object tag) { searchList.Items.Clear(); //反序列化返回的消息生成list ObjSerial<List<string>> se = new ObjSerial<List<string>>(); List<string> list=se.deserializeBytes(response); ChatListItem gp = new ChatListItem();//新建一个组 gp.Text = "查询结果"; gp.IsOpen = true; ChatListSubItemExtend user = new ChatListSubItemExtend(); //获取在线用户的ID foreach (string srtings in list) { //string的形式: //ID卍昵称卍性别卍生日卍地址卍注册时间 string[] userInfo = Regex.Split(srtings, Constant.SPLIT, RegexOptions.IgnoreCase); user.ID = Convert.ToUInt32(userInfo[0]); user.NicName = ""; user.DisplayName = userInfo[1]; if(userInfo[2]=="1") { user.Sex = ChatListSubItemExtend.UserSex.Man; } else if(userInfo[2]=="0") { user.Sex = ChatListSubItemExtend.UserSex.Women; } user.Birth = userInfo[3]; user.Address = userInfo[4]; user.RegistrationDate = userInfo[5]; gp.SubItems.Add(user); } this.searchList.Items.Add(gp); }
public void InitMain(IRapidPassiveEngine rapidPassiveEngine) { //显示托盘 tray.Visible = true; //传入通信引擎 this.rapidPassiveEngine = rapidPassiveEngine; //吸附窗口边缘 hide hide1 = new hide(this, timer_Adsorption); //获取个人信息 if (this.myInfo == null) { this.myInfo = new ChatListSubItemExtend(); } this.myInfo.ID = Convert.ToUInt32(rapidPassiveEngine.CurrentUserID); //窗口显示用户ID this.ReceiveMyInfo = new CallbackHandler(diaplayUser);//实例化收到消息时回调方法的委托 this.rapidPassiveEngine.CustomizeOutter.Query(null, Constant.MSG_QUERYUSER, System.Text.Encoding.UTF8.GetBytes(myInfo.ID.ToString()), ReceiveMyInfo, new Object()); //载入好友列表 displayFriend(); //预订接收到广播消息的处理事件 this.rapidPassiveEngine.GroupOutter.BroadcastReceived += new CbGeneric<string, string, int, byte[]>(GroupOutter_BroadcastReceived); //预订断线处理事件 this.rapidPassiveEngine.ConnectionInterrupted += new CbGeneric(rapidPassiveEngine_ConnectionInterrupted); //好友下线处理事件 this.rapidPassiveEngine.FriendsOutter.FriendOffline += new CbGeneric<string>(FriendOffline); //好友上线处理事件 this.rapidPassiveEngine.FriendsOutter.FriendConnected += new CbGeneric<string>(FriendConnected); }