/// <summary>
        /// 装载工具栏,读取配置文件的分类信息,并在ExplorerBarGroup中显示分类的名称
        /// </summary>
        public void LoadToolBox()
        {
            //  string path = Path.Combine(this.designPath, PublicVariable.ToolConfigFileName);

            toolXML.Load(Path.Combine(this.designPath, PublicVariable.ToolConfigFileName));

            this.explorerBarTool.Groups.Clear();
            if (toolXML.FirstChild != null)
            {
                for (int i = 0; i < toolXML.FirstChild.ChildNodes.Count; i++)
                {
                    if (toolXML.FirstChild.ChildNodes[i] != null &&
                        toolXML.FirstChild.ChildNodes[i].Attributes[0].InnerText != null &&
                        toolXML.FirstChild.ChildNodes[i].Attributes[0].InnerText != CassViewGenerator.SpecialCodeNode)
                    {
                        ExplorerBarGroup catGroup =
                            new ExplorerBarGroup(toolXML.FirstChild.ChildNodes[i].Attributes[0].InnerText);
                        this.explorerBarTool.Groups.Add(catGroup);
                        for (int j = 0; j < toolXML.FirstChild.ChildNodes[i].ChildNodes.Count; j++)
                        {
                            if (toolXML.FirstChild.ChildNodes[i].ChildNodes[j] != null)
                            {
                                string[] assemblyClass =
                                    toolXML.FirstChild.ChildNodes[i].ChildNodes[j].Attributes[0].InnerText.Split(new char[] { ',' });
                                Type        toolboxItemType = GetTypeFromLoadedAssembly(assemblyClass[0], assemblyClass[1]);
                                ToolboxItem toolItem        = new ToolboxItem(toolboxItemType); //表示“工具箱”中的项

                                ExplorerBarItem barItem = new ExplorerBarItem(toolItem.DisplayName);
                                barItem.Image = (Image)global::CaVeGen.Properties.Resources.ResourceManager.GetObject(assemblyClass[2]);

                                barItem.Tag  = assemblyClass;
                                barItem.Text = "  " + assemblyClass[2];

                                if (toolXML.FirstChild.ChildNodes[i].ChildNodes[j].LastChild.Name == "OtherInfo")
                                {
                                    if (toolXML.FirstChild.ChildNodes[i].ChildNodes[j].LastChild.ChildNodes.Count == 3)
                                    {//控件描述信息
                                        barItem.ToolTipText = toolXML.FirstChild.ChildNodes[i].ChildNodes[j].LastChild.ChildNodes[1].InnerText;
                                    }
                                }
                                catGroup.Items.Add(barItem);
                            } //end if (toolXML.FirstChild.ChildNodes[i].ChildNodes[j] != null)
                        }     //end for (int j = 0; j < toolXML.FirstChild.ChildNodes[i].ChildNodes.Count; j++)
                    }         //end if (toolXML.FirstChild.ChildNodes[i] != null)
                    else if (toolXML.FirstChild.ChildNodes[i].Attributes[0].InnerText == CassViewGenerator.SpecialCodeNode)
                    {
                        foreach (XmlNode node in toolXML.FirstChild.ChildNodes[i].ChildNodes)
                        {
                            if (node.Attributes["name"].InnerText != "头文件")
                            {
                                CaVeGen.DesignViewFiles.CodeEditor.PLCCodeEditor.SpecialCode.Add(node.Attributes["varname"].InnerText.ToUpper(), node.Attributes["name"].InnerText);
                            }
                        }
                    }
                } //end for (int i = 0; i < toolXML.FirstChild.ChildNodes.Count; i++)
            }     //end if (toolXML.FirstChild != null)
        }         //end function void LoadToolBox()
        /// <summary>
        /// 该函数中实现了对工具栏中的某项进行拖拉时,创建新该项新的对象,并将其放置到鼠标位置所在的设计器容器中
        /// </summary>
        /// <param name="sender">事件主体</param>
        /// <param name="e">触发的事件类型</param>
        private void explorerBarTool_MouseDown(object sender, MouseEventArgs e)
        {
            Type            toolboxItemType = null;
            ToolboxItem     toolItem;
            ExplorerBarItem node = new ExplorerBarItem();

            try
            {
                CassViewGenerator.listViewSelectIndex = -1;      //表明设计器识别不是从Listview中拖出的对象
                if (sender is ExplorerBar && e.Clicks < PublicVariable.DClick)
                {
                    ExplorerBarItem clickedNode = explorerBarTool.GetItemAt(e.X, e.Y);
                    if (clickedNode != null)
                    {
                        typeNameString  = (string[])clickedNode.Tag;    //重新生成ToolboxItem类型变量
                        toolboxItemType = GetTypeFromLoadedAssembly(typeNameString[0], typeNameString[1]);
                        toolItem        = new ToolboxItem(toolboxItemType);
                        DataObject dataObj = SerializeToolboxItem(toolItem) as DataObject;      //创建对象
                        DoDragDrop(dataObj, DragDropEffects.Copy);
                    }
                }
            }
            catch (Exception ex) { }
        }
        /// <summary>
        /// �ú�����ʵ���˶Թ������е�ij���������ʱ�������¸����µĶ��󣬲�������õ����λ�����ڵ������������
        /// </summary>
        /// <param name="sender">�¼�����</param>
        /// <param name="e">�������¼�����</param>
        private void explorerBarTool_MouseDown(object sender, MouseEventArgs e)
        {
            Type toolboxItemType = null;
            ToolboxItem toolItem;
            ExplorerBarItem node = new ExplorerBarItem();

            try
            {
                CassViewGenerator.listViewSelectIndex = -1;      //���������ʶ���Ǵ�Listview���ϳ��Ķ���
                if (sender is ExplorerBar && e.Clicks < PublicVariable.DClick)
                {
                    ExplorerBarItem clickedNode = explorerBarTool.GetItemAt(e.X, e.Y);
                    if (clickedNode != null)
                    {
                        typeNameString = (string[])clickedNode.Tag;     //��������ToolboxItem���ͱ���
                        toolboxItemType = GetTypeFromLoadedAssembly(typeNameString[0], typeNameString[1]);
                        toolItem = new ToolboxItem(toolboxItemType);
                        DataObject dataObj = SerializeToolboxItem(toolItem) as DataObject;      //��������
                        DoDragDrop(dataObj, DragDropEffects.Copy);
                    }
                }
            }
            catch (Exception ex) { }
        }
        /// <summary>
        /// װ�ع�����,��ȡ�����ļ��ķ�����Ϣ������ExplorerBarGroup����ʾ���������
        /// </summary>
        public void LoadToolBox()
        {
            //  string path = Path.Combine(this.designPath, PublicVariable.ToolConfigFileName);

            toolXML.Load(Path.Combine(this.designPath, PublicVariable.ToolConfigFileName));

            this.explorerBarTool.Groups.Clear();
            if (toolXML.FirstChild != null)
            {
                for (int i = 0; i < toolXML.FirstChild.ChildNodes.Count; i++)
                {
                    if (toolXML.FirstChild.ChildNodes[i] != null
                        && toolXML.FirstChild.ChildNodes[i].Attributes[0].InnerText != null
                        && toolXML.FirstChild.ChildNodes[i].Attributes[0].InnerText != CassViewGenerator.SpecialCodeNode)
                    {
                        ExplorerBarGroup catGroup =
                            new ExplorerBarGroup(toolXML.FirstChild.ChildNodes[i].Attributes[0].InnerText);
                        this.explorerBarTool.Groups.Add(catGroup);
                        for (int j = 0; j < toolXML.FirstChild.ChildNodes[i].ChildNodes.Count; j++)
                        {
                            if (toolXML.FirstChild.ChildNodes[i].ChildNodes[j] != null)
                            {
                                string[] assemblyClass =
                                    toolXML.FirstChild.ChildNodes[i].ChildNodes[j].Attributes[0].InnerText.Split(new char[] { ',' });
                                Type toolboxItemType = GetTypeFromLoadedAssembly(assemblyClass[0], assemblyClass[1]);
                                ToolboxItem toolItem = new ToolboxItem(toolboxItemType);        //��ʾ�������䡱�е���

                                ExplorerBarItem barItem = new ExplorerBarItem(toolItem.DisplayName);
                                barItem.Image = (Image)global::CaVeGen.Properties.Resources.ResourceManager.GetObject(assemblyClass[2]);

                                barItem.Tag = assemblyClass;
                                barItem.Text = "  "+assemblyClass[2];

                                if (toolXML.FirstChild.ChildNodes[i].ChildNodes[j].LastChild.Name == "OtherInfo")
                                {
                                    if (toolXML.FirstChild.ChildNodes[i].ChildNodes[j].LastChild.ChildNodes.Count == 3)
                                    {//�ؼ�������Ϣ
                                        barItem.ToolTipText = toolXML.FirstChild.ChildNodes[i].ChildNodes[j].LastChild.ChildNodes[1].InnerText;
                                    }
                                }
                                catGroup.Items.Add(barItem);
                            }//end if (toolXML.FirstChild.ChildNodes[i].ChildNodes[j] != null)
                        }//end for (int j = 0; j < toolXML.FirstChild.ChildNodes[i].ChildNodes.Count; j++)
                    }//end if (toolXML.FirstChild.ChildNodes[i] != null)
                    else if (toolXML.FirstChild.ChildNodes[i].Attributes[0].InnerText == CassViewGenerator.SpecialCodeNode)
                    {
                        foreach (XmlNode node in toolXML.FirstChild.ChildNodes[i].ChildNodes)
                        {
                            if (node.Attributes["name"].InnerText != "ͷ�ļ�")
                            {
                                CaVeGen.DesignViewFiles.CodeEditor.PLCCodeEditor.SpecialCode.Add(node.Attributes["varname"].InnerText.ToUpper(), node.Attributes["name"].InnerText);
                            }
                        }
                    }
                }//end for (int i = 0; i < toolXML.FirstChild.ChildNodes.Count; i++)
            }//end if (toolXML.FirstChild != null)
        }