//返回消息时回调的方法
        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);
        }
示例#2
0
        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);
        }