Newer
Older
EMS_SZ / GKT_Forms / F_GKT数据输入输出.cs
root on 21 Mar 2016 11 KB first
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using DevComponents.DotNetBar;
using System.Threading;

namespace Cyberpipe.GKT_Forms
{
    public partial class F_GKT数据输入输出 : Office2007Form
    {
        public F_GKT数据输入输出()
        {
            InitializeComponent();
        }
        #region  公共变量
        GKT_logicfile.GKT_Affair GKTAClass = new Cyberpipe.GKT_logicfile.GKT_Affair();//实例化ModuleClass文件夹下的FrmAffairClass公共类
        string dir = "";
        string dir_Ok = "";
        int m = 0;
        string Imadir = "";

        System.Drawing.Image img1;
        System.Drawing.Image img2;
        System.Drawing.Image img3;
        Cyberpipe.udfiles.UpDownFile UDF = new udfiles.UpDownFile(Utility.udserviceurl);

        #endregion

        public void Drive_Name(ComboBox Cbm)
        {
            Cbm.Items.Clear();
            DriveInfo[] myAllDrives = DriveInfo.GetDrives();
            foreach (DriveInfo myDrive in myAllDrives)//循环写入每个磁盘的参数
            {
                if (myDrive.IsReady)
                {
                    Cbm.Items.Add(myDrive.Name);
                }
            }
        }

        public void SubForders(string dir, TreeView TV, TreeNode node)
        {
            int n = 0;
            try
            {
                DirectoryInfo directoryInfo = new DirectoryInfo(dir);
                TreeNode SelectNode = new TreeNode();
                if (dir.Length <= 3)
                {
                    TV.Nodes.Clear();
                    foreach (DirectoryInfo childDirectoryInfo in directoryInfo.GetDirectories())
                    {
                        TreeNode SubNode = new TreeNode(childDirectoryInfo.Name.ToString());
                        SubNode.ImageIndex = 0;
                        TV.Nodes.Add(SubNode);
                        SubNode.Nodes.Add(new TreeNode(""));
                    }
                }
                else
                {
                    SelectNode = TV.SelectedNode;
                    if (TV.SelectedNode == null)
                        SelectNode = node;
                    SelectNode.Nodes.Clear();
                    foreach (DirectoryInfo childDirectoryInfo in directoryInfo.GetDirectories())
                    {
                        TreeNode SubNode = new TreeNode(childDirectoryInfo.Name.ToString());
                        SubNode.ImageIndex = 0;
                        SelectNode.Nodes.Add(SubNode);
                        SubNode.Nodes.Add(new TreeNode(""));
                        n = 1;
                    }
                }
                if (n == 0)
                    SelectNode.ImageIndex = 0;
            }
            catch (Exception ex) { }


        }

        private void comboBox_Disk_TextChanged(object sender, EventArgs e)
        {
            SubForders(((ComboBox)sender).Text, treeView1, new TreeNode(""));
        }

        private void F_数据输入输出_Load(object sender, EventArgs e)
        {
            string appUrl = "";
            appUrl = Application.StartupPath;

            img1 = Image.FromFile(appUrl + "/Resource/00.png");
            img2 = Image.FromFile(appUrl + "/Resource/01.png");
            img3 = Image.FromFile(appUrl + "/Resource/03.png");
            this.imageList1.Images.Add(img1);
            this.imageList1.Images.Add(img2);
            this.imageList1.Images.Add(img3);

            Imadir = GKTAClass.UpAndDown_Dir(System.AppDomain.CurrentDomain.BaseDirectory);
            Imadir = GKTAClass.UpAndDown_Dir(Imadir);
            Imadir = GKTAClass.UpAndDown_Dir(Imadir);
            //panel_Title.BackgroundImage = Image.FromFile(Imadir + "\\Image\\" + ModuleClass.FrmAffairClass.Redact_T + this.Tag.ToString() + ".JPG");
            m = int.Parse(this.Tag.ToString());
            switch (m)
            {
                case 0:
                    {
                        break;
                    }
                case 1:
                    {
                        break;
                    }
                case 2:
                    {
                        break;
                    }
            }
            Drive_Name(comboBox_Disk);
        }

        //private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        //{
        //    dir = comboBox_Disk.Text + e.Node.FullPath;
        //    dir_Ok = dir;
        //    e.Node.SelectedImageIndex = e.Node.ImageIndex;
        //    SubForders(dir, treeView1, e.Node);
        //}

        private void Cancel_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;//将当前窗体的对话框返回值设为Cancel
            Close();
        }

        private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
        {
            e.Node.ImageIndex = 1;
            SubForders(comboBox_Disk.Text + e.Node.FullPath, treeView1, e.Node);
        }

        private void treeView1_AfterCollapse(object sender, TreeViewEventArgs e)
        {
            e.Node.ImageIndex = 0;
        }

       

        private void OK_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "") {
                MessageBox.Show("请选择输出位置!");
                return;
            }
            if (dir_Ok == "")
                dir_Ok = textBox1.Text;
            switch (m)
            {
                case 0:
                    {
                        GKTAClass.Folder_Handle(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D + "\\" + GKTAClass.Files_Name(dir_Ok, 1), dir_Ok, "data", 3);
                        break;
                    }
                case 1:
                    {
                        GKTAClass.Folder_Handle(dir_Ok + "\\" + GKTAClass.Files_Name(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, 1), Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, "", 3);
                        break;
                    }
                case 2:
                    {

                        Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D = Utility.uploadpath + "\\Gkt\\"
                            + Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D + "\\" + Cyberpipe.GKT_logicfile.GKT_Affair.Redact_N;
                        if (File.Exists(dir_Ok+"\\"+GKTAClass.Files_Name(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, 1)) == true)
                        {
                            if (MessageBox.Show("文件夹下有同名文件,是否替换?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
                                break;
                        }
                        byte[] file = UDF.Down(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D);
                        FileStream pFileSream = new FileStream(dir_Ok + "\\" + Cyberpipe.GKT_logicfile.GKT_Affair.Redact_N, FileMode.OpenOrCreate);
                        pFileSream.Write(file, 0, file.Length);
                        pFileSream.Close();

                        if (File.Exists(dir_Ok + "\\" + GKTAClass.Files_Name(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, 1)) == true)
                        {
                            MessageBox.Show("文件导出成功!");
                        }
                        // GKTAClass.Folder_Handle(dir_Ok + "\\" + GKTAClass.Files_Name(Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, 0), Cyberpipe.GKT_logicfile.GKT_Affair.Redact_D, "", 0);
                        break;
                    }
            }
            DialogResult = DialogResult.OK;//将当前窗体的对话框返回值设为OK
        }
        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            dir_Ok = comboBox_Disk.Text + e.Node.FullPath;
            //dir = comboBox_Disk.Text + e.Node.FullPath; 
            e.Node.SelectedImageIndex = e.Node.ImageIndex;
        }
        string tempstr = "";
        private void button1_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)                  //打开文件夹对话框
            { 
                textBox1.Text = folderBrowserDialog1.SelectedPath;                //显示选择的文件夹路径

                tempstr = folderBrowserDialog1.SelectedPath;                         //存储选择的文件夹路径

                //Thread thdAddFile = new Thread(new ThreadStart(SetAddFile));                //创建一个线程

                //thdAddFile.Start();                                                         //执行当前线程

            }

        }
        public delegate void AddFile();                                                       //定义委托线程

        public void SetAddFile()
        {

            this.Invoke(new AddFile(RunAddFile));                                                 //对指定的线程进行托管

        }
        public void RunAddFile()
        {

            TreeNode TNode = new TreeNode();                                             //实例化一个线程

            Files_Copy(treeView1, tempstr, TNode, 0);

            Thread.Sleep(0);                                                                   //持起主线程

            //thdAddFile.Abort();                                                        //执行线程 

        }

        private void Files_Copy(TreeView TV, string Sdir, TreeNode TNode, int n)

{

    DirectoryInfo dir = new DirectoryInfo(Sdir);

    try

    {

        if (!dir.Exists)                                                         //判断所指的文件或文件夹是否存在

            return;

        DirectoryInfo dirD = dir as DirectoryInfo;                                      //如果给定参数不是文件夹则退出

        if (dirD == null)                                                             //判断文件夹是否为空

            return;

        else

        {

            if (n == 0)

            {

                TNode = TV.Nodes.Add(dirD.Name);                       //添加文件夹的名称

                TNode.Tag = 1;

            }

            else

            {

                TNode = TNode.Nodes.Add(dirD.Name);                         //添加文件夹里面各文件夹的名称

                TNode.Tag = 1;

            }

        }

        FileSystemInfo[] files = dirD.GetFileSystemInfos();                         //获取文件夹中所有文件和文件夹

        foreach (FileSystemInfo FSys in files)        //对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作

        {

            FileInfo file = FSys as FileInfo;

            if (file != null)                                                         //如果是文件的话,进行文件的复制操作

            {

                FileInfo SFInfo = new FileInfo(file.DirectoryName + "\\" + file.Name);     //获取文件所在的原始路径

                TNode.Nodes.Add(file.Name);                                         //添加文件

                TNode.Tag = 1;

            }

            else

            {

                string pp = FSys.Name;                                           //获取当前搜索到的文件夹名称

                Files_Copy(TV, Sdir + "\\" + FSys.ToString(), TNode, 1); //如果是文件夹,则进行递归调用

            }

        }

 

    }

    catch (Exception ex)

    {

        MessageBox.Show(ex.Message);

        return;

    }

}


        public string UpAndDown_Dir(string dir)
        {

            string Change_dir = "";                                                           //定义字符串变量

            Change_dir = Directory.GetParent(dir).FullName;                                   //返回当前路径的父级路径

            return Change_dir;

        }


    }
}