public void Initialize(IMultimediaManager mgr, string chatGroupID)
        {
            this.multimediaManager = mgr;
            this.chatGroup         = this.multimediaManager.ChatGroupEntrance.Join(ChatType.Audio, chatGroupID);

            this.decibelDisplayer_mic.Working     = true;
            this.decibelDisplayer_speaker.Working = true;
            this.multimediaManager.AudioCaptured += new ESBasic.CbGeneric <byte[]>(multimediaManager_AudioCaptured);
            this.multimediaManager.AudioPlayed   += new ESBasic.CbGeneric <byte[]>(multimediaManager_AudioPlayed);

            this.chatGroup.SomeoneJoin += new ESBasic.CbGeneric <IChatUnit>(chatGroup_SomeoneJoin);
            this.chatGroup.SomeoneExit += new CbGeneric <string>(chatGroup_SomeoneExit);

            SpeakerPanel myselfPanel = new SpeakerPanel();

            myselfPanel.Initialize(this.multimediaManager.CurrentUserID);
            this.flowLayoutPanel1.Controls.Add(myselfPanel);
            foreach (IChatUnit unit in this.chatGroup.GetOtherMembers())
            {
                SpeakerPanel panel = new SpeakerPanel();
                panel.Initialize(unit);
                this.flowLayoutPanel1.Controls.Add(panel);
            }

            this.groupBox_members.Text = string.Format("成员列表({0}人)", this.flowLayoutPanel1.Controls.Count);

            this.flowLayoutPanel1_SizeChanged(this.flowLayoutPanel1, new EventArgs());
        }
        void chatGroup_SomeoneExit(string memberID)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new CbGeneric <string>(this.chatGroup_SomeoneExit), memberID);
            }
            else
            {
                SpeakerPanel target = null;
                foreach (SpeakerPanel panel in this.flowLayoutPanel1.Controls)
                {
                    if (panel.MemberID == memberID)
                    {
                        target = panel;
                        break;
                    }
                }

                if (target == null)
                {
                    return;
                }

                this.flowLayoutPanel1.Controls.Remove(target);
                this.groupBox_members.Text = string.Format("成员列表 ({0}人)", this.flowLayoutPanel1.Controls.Count);
                this.toolStripLabel1.Text  = string.Format("{0} 退出了组!", memberID);
            }
        }
 void chatGroup_SomeoneJoin(IChatUnit unit)
 {
     if (this.InvokeRequired)
     {
         this.BeginInvoke(new CbGeneric <IChatUnit>(this.chatGroup_SomeoneJoin), unit);
     }
     else
     {
         SpeakerPanel panel = new SpeakerPanel();
         panel.Width = this.flowLayoutPanel1.Width - 2;
         panel.Initialize(unit);
         this.flowLayoutPanel1.Controls.Add(panel);
         this.groupBox_members.Text = string.Format("成员列表 ({0}人)", this.flowLayoutPanel1.Controls.Count);
         this.toolStripLabel1.Text  = string.Format("{0} 加入了组!", unit.MemberID);
     }
 }