private void treeView2_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            treeView2.SelectedNode = e.Node;
            //MessageBox.Show(Convert.ToString(treeView2.SelectedNode.Text));
            //int temp = treeView2.SelectedNode.Index + 11;

            foreach (FolderInfo fi in BuissnesServiceImpl.folderjihe1.ToArray())                    //存疑,一般的写法有可能引发集合被修改的异常
            {
                if ((fi.pId == Convert.ToInt16(e.Node.Name)) && fi.test == false)
                {
                    fi.test = true;
                    //MessageBox.Show(fi.fName);
                    if (fi.hasChild == true)
                    {
                        GetChildMediaFolderListreqbody childmediafolderlistreqbody = new GetChildMediaFolderListreqbody();    //生成获取子文件夹的请求并发送
                        childmediafolderlistreqbody.parentID = fi.folderId;                                                   //不好理解,待定
                        GetChildMediaFolderListreq childmediafolderlistreq = new GetChildMediaFolderListreq();
                        childmediafolderlistreq.body = childmediafolderlistreqbody;
                        string sGetChildMediaFolderListreq = new JavaScriptSerializer().Serialize(childmediafolderlistreq);
                        Form1.wb.send(sGetChildMediaFolderListreq);
                        Thread.Sleep(200);

                        foreach (FolderInfo fi2 in BuissnesServiceImpl.folderjihe1)
                        {
                            if (fi2.pId > 15 && fi2.add == false)
                            {
                                //this.treeView2.Nodes[(fi2.pId - 11)].Nodes.Add(fi2.fName, fi2.fName, 1, 1);
                                TreeNode newfolder = new TreeNode(fi2.fName, 1, 1);
                                newfolder.Name = Convert.ToString(fi2.folderId);
                                e.Node.Nodes[fi.treeViewIndex].Nodes.Add(newfolder);
                                fi2.treeViewIndex = newfolder.Index;
                                fi2.add           = true;
                            }
                        }
                    }
                    if (fi.hasMedia == true)
                    {
                        GetMediaFileListreqbody id4mediabody = new GetMediaFileListreqbody();
                        id4mediabody.id = fi.folderId;
                        GetMediaFileListreq id4media = new GetMediaFileListreq();
                        id4media.body = id4mediabody;
                        string sGetMediaFileListreq = new JavaScriptSerializer().Serialize(id4media);
                        Form1.wb.send(sGetMediaFileListreq);
                        Thread.Sleep(200);

                        foreach (MediaList medial1 in BuissnesServiceImpl.mediajihe1)
                        {
                            if (medial1.pId > 15 && medial1.add == false)
                            {
                                e.Node.Nodes[fi.treeViewIndex].Nodes.Add(medial1.fileName, medial1.fileName, 6, 6);
                                medial1.add = true;
                            }
                        }
                    }
                }
            }
        }
        private void Formxianshiqiang_Load(object sender, EventArgs e)
        {
            this.actimer.Enabled  = true;
            this.actimer.Interval = 8000;
            this.actimer.Tick    += new EventHandler(Actimer_Tick);
            this.actimer.Start();

            Form1.wb.send(@" { ""body"" : """", ""guid"" : ""M-44"", ""type"" : ""LOADVIDEOWALLINFO"" }");

            NewTabControl ntc1 = new NewTabControl();

            ntc1.Location              = new Point(556, 28);
            ntc1.SelectedIndexChanged += new EventHandler(ntc1_SelectedIndexChanged);

            TabPage Newpage1 = new TabPage();

            //Newpage1.Location = new System.Drawing.Point(4, 22);
            Newpage1.Name     = "newPage0";
            Newpage1.Padding  = new System.Windows.Forms.Padding(3);
            Newpage1.Size     = new System.Drawing.Size(187, 444);
            Newpage1.TabIndex = 0;
            Newpage1.Text     = "设备";
            Newpage1.UseVisualStyleBackColor = true;

            TabPage Newpage2 = new TabPage();

            Newpage2.Name     = "newPage1";
            Newpage2.Padding  = new System.Windows.Forms.Padding(3);
            Newpage2.Size     = new System.Drawing.Size(187, 444);
            Newpage2.TabIndex = 1;
            Newpage2.Text     = "媒体";
            Newpage2.UseVisualStyleBackColor = true;

            TabPage Newpage3 = new TabPage();

            Newpage3.Name     = "newPage2";
            Newpage3.Padding  = new System.Windows.Forms.Padding(3);
            Newpage3.Size     = new System.Drawing.Size(187, 444);
            Newpage3.TabIndex = 2;
            Newpage3.Text     = "录像";
            Newpage3.UseVisualStyleBackColor = true;

            TabPage Newpage4 = new TabPage();

            Newpage4.Name     = "newPage3";
            Newpage4.Padding  = new System.Windows.Forms.Padding(3);
            Newpage4.Size     = new System.Drawing.Size(187, 444);
            Newpage4.TabIndex = 3;
            Newpage4.Text     = "分组";
            Newpage4.UseVisualStyleBackColor = true;

            treeView1.Location = new Point(3, 6);
            Newpage1.Controls.Add(treeView1);

            treeView2.Location = new Point(3, 6);
            Newpage2.Controls.Add(treeView2);

            ntc1.Name          = "newtabControl";
            ntc1.SelectedIndex = 0;
            ntc1.Size          = new System.Drawing.Size(195, 470);
            ntc1.TabIndex      = 0;
            ntc1.Controls.Add(Newpage1);
            ntc1.Controls.Add(Newpage2);
            ntc1.Controls.Add(Newpage3);
            ntc1.Controls.Add(Newpage4);
            this.Controls.Add(ntc1);

            //int i = 1;

            for (int id4confirm = 11; id4confirm < 15; id4confirm++)                                      //载入媒体4个根目录的基本信息
            {
                GetMediaFolderInforeqbody id4body = new GetMediaFolderInforeqbody();
                id4body.folderID = id4confirm;
                GetMediaFolderInforeq id4 = new GetMediaFolderInforeq();
                id4.body = id4body;
                string sGetMediaFolderInforeq = new JavaScriptSerializer().Serialize(id4);
                Form1.wb.send(sGetMediaFolderInforeq);

                Thread.Sleep(200);

                if (BuissnesServiceImpl.mediafolderinfobody.hasChild == true)
                {
                    //MessageBox.Show("文件夹" + BuissnesServiceImpl.mediafolderinfobody.folderName + "还有子项(经check此子项是指子文件夹)");

                    GetChildMediaFolderListreqbody childmediafolderlistreqbody = new GetChildMediaFolderListreqbody();    //生成获取子文件夹的请求并发送
                    childmediafolderlistreqbody.parentID = BuissnesServiceImpl.mediafolderinfobody.folderID;
                    GetChildMediaFolderListreq childmediafolderlistreq = new GetChildMediaFolderListreq();
                    childmediafolderlistreq.body = childmediafolderlistreqbody;
                    string sGetChildMediaFolderListreq = new JavaScriptSerializer().Serialize(childmediafolderlistreq);
                    Form1.wb.send(sGetChildMediaFolderListreq);
                    Thread.Sleep(1000);

                    /*
                     * foreach (FolderInfo fi in BuissnesServiceImpl.folderjihe1)
                     * {
                     *  this.treeView2.Nodes[(fi.pId-11)].Nodes.Add(fi.fName);
                     * }
                     */
                }
                else if (BuissnesServiceImpl.mediafolderinfobody.hasChild == false)
                {
                    //MessageBox.Show("文件夹" + BuissnesServiceImpl.mediafolderinfobody.folderName + "没有子项(经check此子项是指子文件夹)!!");
                }

                GetMediaFileListreqbody id4mediabody = new GetMediaFileListreqbody();
                id4mediabody.id = id4confirm;
                GetMediaFileListreq id4media = new GetMediaFileListreq();
                id4media.body = id4mediabody;
                string sGetMediaFileListreq = new JavaScriptSerializer().Serialize(id4media);
                Form1.wb.send(sGetMediaFileListreq);

                Thread.Sleep(200);
            }

            foreach (FolderInfo fi in BuissnesServiceImpl.folderjihe1)
            {
                if (fi.pId > 10 && fi.pId < 15)
                {
                    //this.treeView2.Nodes[(fi.pId - 11)].Nodes.Add(fi.fName, fi.fName, 1, 1);

                    TreeNode newfolder = new TreeNode(fi.fName, 1, 1);
                    newfolder.Name = Convert.ToString(fi.folderId);
                    this.treeView2.Nodes[(fi.pId - 11)].Nodes.Add(newfolder);
                    fi.treeViewIndex = newfolder.Index;                                                     //这里是大坑啊,一定要深刻理解这几句命令的意义和顺序!不然index永远为0
                }
            }

            foreach (MediaList medial in BuissnesServiceImpl.mediajihe1)
            {
                if (medial.pId > 10 && medial.pId < 15)
                {
                    this.treeView2.Nodes[(medial.pId - 11)].Nodes.Add(medial.fileName, medial.fileName, 6, 6);
                }
            }

            Thread.Sleep(200);
            //Thread.Sleep(5000);

            //MessageBox.Show(i.ToString());

            for (int devicerootint = 1; devicerootint < 8; devicerootint++)
            {
                GetDeviceFolderInforeqbody devicefolderinforeqbodyroot = new GetDeviceFolderInforeqbody();               //发送请求,载入设备若干个根目录的基本信息
                devicefolderinforeqbodyroot.typeid = Convert.ToUInt32(devicerootint);
                GetDeviceFolderInforeq devicefolderinforeqroot = new GetDeviceFolderInforeq();
                devicefolderinforeqroot.body = devicefolderinforeqbodyroot;
                string sGetDeviceFolderInforeqroot = new JavaScriptSerializer().Serialize(devicefolderinforeqroot);
                Form1.wb.send(sGetDeviceFolderInforeqroot);

                Thread.Sleep(200);

                if (BuissnesServiceImpl.devicefolderinfobody.hasChild == true)
                {
                    GetDeviceTypeFolderListreqbody childdevicetypefolderlistreqbody = new GetDeviceTypeFolderListreqbody();
                    childdevicetypefolderlistreqbody.typeid = BuissnesServiceImpl.devicefolderinfobody.folderID;
                    GetDeviceTypeFolderListreq childdevicetypefolderlistreq = new GetDeviceTypeFolderListreq();
                    childdevicetypefolderlistreq.body = childdevicetypefolderlistreqbody;
                    string sGetDevicTypeFolderListreq = new JavaScriptSerializer().Serialize(childdevicetypefolderlistreq);
                    Form1.wb.send(sGetDevicTypeFolderListreq);
                    Thread.Sleep(1000);
                }
                else if (BuissnesServiceImpl.devicefolderinfobody.hasChild == false)
                {
                }

                GetDeviceListreqbody devicelistreqbodyroot = new GetDeviceListreqbody();
                devicelistreqbodyroot.id = Convert.ToUInt32(devicerootint);
                GetDeviceListreq devicelistreqroot = new GetDeviceListreq();
                devicelistreqroot.body = devicelistreqbodyroot;
                string sGetDeviceListreqroot = new JavaScriptSerializer().Serialize(devicelistreqroot);
                Form1.wb.send(sGetDeviceListreqroot);

                Thread.Sleep(200);
            }

            foreach (DeviceFolderele dfe in BuissnesServiceImpl.devicefolderjihe1)
            {
                if (dfe.parentID > 0 && dfe.parentID < 11)
                {
                    TreeNode newdevicefolder = new TreeNode(dfe.deviceFolderName, 2, 2);
                    newdevicefolder.Name = Convert.ToString(dfe.folderID);
                    this.treeView1.Nodes[(Convert.ToInt16(dfe.parentID) - 1)].Nodes.Add(newdevicefolder);
                    dfe.treeViewIndex = newdevicefolder.Index;
                }
            }
            foreach (DeviceList devicel in BuissnesServiceImpl.devicejihe1)
            {
                if (devicel.devicepId > 0 && devicel.devicepId < 11)
                {
                    switch (devicel.deviceType)
                    {
                    case 1:
                        TreeNode newcontroller = new TreeNode(devicel.deviceName, 5, 5);
                        newcontroller.Name = Convert.ToString(devicel.deviceId);
                        this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes.Add(newcontroller);
                        if (devicel.sourceinfo != null)
                        {
                            for (int i1 = 0; i1 < devicel.sourceinfo.Count; i1++)
                            {
                                TreeNode newapp = new TreeNode(devicel.sourceinfo[i1].sourceName, 3, 3);
                                newapp.Name = Convert.ToString(devicel.sourceinfo[i1].sourceId);
                                newcontroller.Nodes.Add(newapp);

                                /*
                                 * foreach (TreeNode controller1 in this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes)
                                 * {
                                 *  if (controller1.Name == devicel.deviceName)
                                 *  {
                                 *      controller1.Nodes.Add(newapp);
                                 *  }
                                 * }
                                 */
                            }
                        }
                        break;

                    case 2:
                        TreeNode newmatrix = new TreeNode(devicel.deviceName, 9, 9);
                        newmatrix.Name = Convert.ToString(devicel.deviceId);
                        this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes.Add(newmatrix);
                        if (devicel.sourceinfo != null)
                        {
                            for (int i2 = 0; i2 < devicel.sourceinfo.Count; i2++)
                            {
                                TreeNode newmatrixsource = new TreeNode(devicel.sourceinfo[i2].sourceName, 10, 10);
                                newmatrixsource.Name = Convert.ToString(devicel.sourceinfo[i2].sourceId);
                                newmatrix.Nodes.Add(newmatrixsource);
                            }
                        }
                        break;

                    case 3:
                        TreeNode newnvr = new TreeNode(devicel.deviceName, 11, 11);
                        newnvr.Name = Convert.ToString(devicel.deviceId);
                        this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes.Add(newnvr);
                        if (devicel.sourceinfo != null)
                        {
                            for (int i3 = 0; i3 < devicel.sourceinfo.Count; i3++)
                            {
                                TreeNode newnvrsource = new TreeNode(devicel.sourceinfo[i3].sourceName, 6, 6);
                                newnvrsource.Name = Convert.ToString(devicel.sourceinfo[i3].sourceId);
                                newnvr.Nodes.Add(newnvrsource);
                            }
                        }
                        break;

                    case 4:
                        TreeNode newipc = new TreeNode(devicel.deviceName, 7, 7);
                        newipc.Name = Convert.ToString(devicel.deviceId);
                        this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes.Add(newipc);
                        if (devicel.sourceinfo != null)
                        {
                            for (int i4 = 0; i4 < devicel.sourceinfo.Count; i4++)
                            {
                                TreeNode newipcsource = new TreeNode(devicel.sourceinfo[i4].sourceName, 6, 6);
                                newipcsource.Name = Convert.ToString(devicel.sourceinfo[i4].sourceId);
                                newipc.Nodes.Add(newipcsource);
                            }
                        }
                        break;

                    case 5:
                        TreeNode newstreaming = new TreeNode(devicel.deviceName, 8, 8);
                        newstreaming.Name = Convert.ToString(devicel.deviceId);
                        this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes.Add(newstreaming);
                        break;

                    case 6:
                        TreeNode newtrans = new TreeNode(devicel.deviceName, 12, 12);
                        newtrans.Name = Convert.ToString(devicel.deviceId);
                        this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes.Add(newtrans);
                        break;

                    case 7:
                        TreeNode newprojector = new TreeNode(devicel.deviceName, 1, 1);
                        newprojector.Name = Convert.ToString(devicel.deviceId);
                        this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes.Add(newprojector);
                        break;
                    }

                    //this.treeView1.Nodes[Convert.ToInt16(devicel.devicepId) - 1].Nodes.Add(devicel.deviceName, devicel.deviceName, 0, 0);
                }
            }
            Thread.Sleep(200);
        }