⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cs

📁 一个用C#编写的能实现即时通讯的工具
💻 CS
📖 第 1 页 / 共 2 页
字号:
                        break;
                    }
                }

                if (check)
                {
                    frmchat frm = new frmchat(msg.From.User, con);
                    frm.Show();
                    onlinechatfrm.onlinefrm.Add(frm);

                    frm.rtb_recv.SelectionFont = new Font(frm.rtb_recv.SelectionFont.FontFamily, 9);
                    frm.rtb_recv.SelectionIndent = 5;
                    frm.rtb_recv.SelectionColor = Color.Blue;
                    frm.rtb_recv.AppendText(msg.From.User + " " + System.DateTime.Now.Hour.ToString() + ":" + System.DateTime.Now.Minute.ToString() + ":" + System.DateTime.Now.Second.ToString() + "\r\n");

                    frm.rtb_recv.SelectionFont = new Font(frm.rtb_recv.SelectionFont.FontFamily, 12);
                    frm.rtb_recv.SelectionIndent = 20;
                    frm.rtb_recv.SelectionColor = Color.Black;
                    frm.rtb_recv.AppendText(msg.Body + "\r\n");
                }
            }
            //处理组聊消息
            if (msg.Type == MessageType.groupchat)
            {
                if (Iscreatergroupchat)
                {
                    onlinegroupchatfrm.creatergroupchatfrm.meetingOnMessage(this, msg);
                }
                else
                {
                    onlinegroupchatfrm.groupchatfrm.meetingOnMessage(this, msg);
                }
            }
        }

        private void con_OnPresence(object sender, Presence pres)
        {
            if (InvokeRequired)
            {			
                BeginInvoke(new OnPresenceDelegate(con_OnPresence), new object[] { sender, pres });
                return;
            }
            //用户登入消息
            if (pres.Show == ShowType.chat)
            {
                foreach (TreeNode node in treeView1.Nodes)
                {
                    foreach (TreeNode childnode in node.Nodes)
                    {
                        if (childnode.Text == pres.From.User)
                        {
                            if (childnode.ImageIndex > 100)
                            {
                                childnode.ImageIndex -= 100;
                                childnode.SelectedImageIndex -= 100;
                            }
                            break;
                        }
                    }
                }
            }
            //用户下线消息
            else if (pres.Type == PresenceType.unavailable)
            {
                foreach (TreeNode node in treeView1.Nodes)
                {
                    foreach (TreeNode childnode in node.Nodes)
                    {
                        if (childnode.Text == pres.From.User)
                        {
                            if (childnode.ImageIndex <= 100)
                            {
                                childnode.ImageIndex += 100;
                                childnode.SelectedImageIndex += 100;
                            }
                            break;
                        }
                    }
                }
            }
            //会议创建消息
            else if (pres.Type == PresenceType.probe)
            {
                string[] str={pres.From.User,pres.From.Resource};
                ListViewItem item = new ListViewItem(str, 1);
                listView_onlineroom.Items.Add(item);
            }
            //会议取消消息
            else if (pres.Type == PresenceType.invisible)
            {
                for (int i = 0; i < listView_onlineroom.Items.Count; i++)
                {
                    if (listView_onlineroom.Items[i].Text == pres.From.User && listView_onlineroom.Items[i].SubItems[1].Text == pres.From.Resource)
                    {
                        listView_onlineroom.Items.RemoveAt(i);
                        break;
                    }
                }
                if (Islogingroupchat)
                {
                    if (onlinegroupchatfrm.groupchatfrm != null)
                    {
                        if (onlinegroupchatfrm.groupchatfrm.roomjid.Equals(pres.From))
                        {
                            MessageBox.Show("会议被创建者关闭,会议窗口将退出!", "注意");
                            onlinegroupchatfrm.groupchatfrm.Dispose();
                            Isgroupchat = false;
                        }
                    }
                }
            }
            //用户登入会议消息
            else if (pres.Type == PresenceType.subscribe)
            {
                if (Iscreatergroupchat)
                {
                    onlinegroupchatfrm.creatergroupchatfrm.meetingPresence(this, pres);
                }
                else
                {
                    onlinegroupchatfrm.groupchatfrm.meetingPresence(this,pres);
                }
            }
            //用户退出会议消息
            else if (pres.Type == PresenceType.unsubscribe)
            {
                if (Iscreatergroupchat)
                {
                    onlinegroupchatfrm.creatergroupchatfrm.meetingPresence(this, pres);
                }
                else
                {
                    onlinegroupchatfrm.groupchatfrm.meetingPresence(this, pres);
                }
            }
        }
        private void createMeeting(object sender, EventArgs e)
        {
            if (!Isgroupchat)
            {
                createmeeting frm = new createmeeting();
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    Isgroupchat = true;
                    Iscreatergroupchat = true;
                    Browse browse = new Browse();
                    browse.Value = room.roompwd;
                    IQ iq = new IQ();
                    iq.AddChild(browse);
                    iq.Type = IqType.set;
                    iq.To = new Jid(room.roomname, "localhost", con.Username);
                    con.Send(iq);

                    creatergroupChat creatergroupfrm = new creatergroupChat(iq.To, con);
                    onlinegroupchatfrm.creatergroupchatfrm = creatergroupfrm;
                    creatergroupfrm.Show();

                    Presence pre = new Presence();
                    pre.From = new Jid(con.Username, "localhost", "Resource");
                    pre.Type = PresenceType.subscribe;
                    onlinegroupchatfrm.creatergroupchatfrm.meetingPresence(this,pre);
                }
            }
            else
            {
                MessageBox.Show("你已经身在一个会议当中,不能建立会议室!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void listView_onlineroom_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (!Isgroupchat)
            {
                logingroupchat frm = new logingroupchat();
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    Isgroupchat = true;
                    Islogingroupchat = true;
                    Browse browse = new Browse();
                    browse.Value = loginroom.roompwd;
                    IQ iq = new IQ();
                    iq.AddChild(browse);
                    iq.Type = IqType.get;
                    iq.Id = "loginmeeting";
                    iq.To = new Jid(listView_onlineroom.SelectedItems[0].Text, "localhost", listView_onlineroom.SelectedItems[0].SubItems[1].Text);
                    con.Send(iq);
                }
            }
            else
            {
                MessageBox.Show("你已经身在一个会议当中,不能再加入会议室!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        //鼠标双击子结点,初始化聊天窗口
        private void treeView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            bool check = true;
             TreeNode tn = this.treeView1.GetNodeAt(e.X, e.Y);
             if (tn != null && tn.IsSelected && tn.Level != 0 && e.Button == MouseButtons.Left)
             {
                 foreach (frmchat frm in onlinechatfrm.onlinefrm)
                 {
                     if (frm.name == tn.Text)
                     {
                         frm.Activate();
                         check = false;
                         break;
                     }
                 }
                 if (check)
                 {
                     frmchat frm = new frmchat(tn.Text, this.con);
                     onlinechatfrm.onlinefrm.Add(frm);
                     frm.Show();
                 }
             }
        }

        private void treeView1_MouseClick(object sender, MouseEventArgs e)
        {
            TreeNode tn = this.treeView1.GetNodeAt(e.X, e.Y);
            treeView1.SelectedNode = tn;
        }

        private void userInfo(object sender, EventArgs e)
        {
            /*agsXMPP.protocol.client.Message msg = new agsXMPP.protocol.client.Message();
            Info userInfo = new Info();
            userInfo.Name=treeView1.SelectedNode.Text;
            msg.AddChild(userInfo);
            con.Send(msg);
             */
            IQ iq = new IQ();
            Info userInfo = new Info();
            userInfo.Name = treeView1.SelectedNode.Text;
            iq.AddChild(userInfo);
            iq.Id = "browse";
            iq.Type = IqType.get;
            con.Send(iq);
        }

        private void 修改个人资料ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IQ iq = new IQ();
            Info userInfo = new Info();
            userInfo.Name = con.Username;
            iq.AddChild(userInfo);
            iq.Id = "edit";
            iq.Type = IqType.get;
            con.Send(iq);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -