簡體   English   中英

如何在一個用戶控件中顯示多個進程?

[英]How to display multiple processes in one user control?

一個有條件的例子。
有:
-數據文件(例如(文件“數據”)使用):
.. \\ 01 \\數據\\ fol_data_1 \\ fol_data_1.txt
.. \\ 01 \\數據\\ fol_data_2 \\ fol_data_2.txt
.. \\ 01 \\數據\\ fol_data_3 \\ fol_data_3.txt
“數據”文件顯示在樹形視圖中。
用戶可以添加,刪除,修改“數據”文件。
場景。
1.用戶。 在樹中選擇一個或多個“數據”文件(fol_data_“ N”); 通過將CheckBoxes轉換為“ true”來進行選擇。
2.用戶。 單擊“運行”按鈕(button3);
3.程序。 為每個文件“數據”創建表“ DateTable”;
4.程序。 為每個“數據”文件創建“ DateGrid”;
5.程序。 解析“數據”文件中的數據;
6.程序。 他在“ DateTable”中寫道;
7.程序。 帶入“ DataGrid”;
必須同時為所有選定的“數據”文件執行項目3-7。
項目3-7放置在用戶控件“ GridUserControl”中。
在程序執行將行從“數據”文件傳輸到“日期表”的過程時,用戶可以使用光標瀏覽樹。
如果用戶為已經為其運行的進程輸入“數據”文件,則“ panel3”顯示“ GridUserControl”以及當前“ DateGrid”填充狀態(以行/

題。
1.如何實現這種情況?
2.對實施此方案有何評論(建議)?

PROJEKT- 鏈接
PIC_1

GridUserControl.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TreeView_FolderTree
{
    public partial class GridUserControl : UserControl
    {

        public string pathFileData;

        public GridUserControl(string pathFileData)
        {
            InitializeComponent();

            // Обрабатываем данные
            //Или записываем их в поле
            this.pathFileData = pathFileData;

        }

        private void GridUserControl_Load(object sender, EventArgs e)
        {
            start_GridUserControl();
        }

        public void start_GridUserControl()
        {
            DataTable table_1;

            //привязка данных
            BindingSource bs;


            table_1 = new DataTable();
            table_1.Columns.Add("Content", typeof(string));
            table_1.Columns.Add("DateTime", typeof(DateTime));

            bs = new BindingSource(table_1, "");

            dataGridView1.DataSource = bs;
            dataGridView1.Columns["DateTime"].DefaultCellStyle.Format = "dd.MM.yyyy HH:mm:ss tt";



            // Читаем файл "Данные"
            string[] lines = System.IO.File.ReadAllLines(pathFileData);

            // System.Console.WriteLine("Contents of WriteLines2.txt = ");
            foreach (string line in lines)
            {
                //создаем новую запись
                DataRow newrow = table_1.NewRow();

                //заполняем ее данными
                newrow["Content"] = line;
                newrow["DateTime"] = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");

                //заносим запись в таблицу
                table_1.Rows.Add(newrow);

                //обновляем данные в гриде
                bs.ResetBindings(false);

                // Пауза
                System.Threading.Thread.Sleep(1500);
                Application.DoEvents();

            }
        }


    }
}

是的

我是在正確的道路上還是有更好的方法?

*代碼Form1.cs *
創建TreeView

#region  *** TreeView Создание***
        private void InitFolders()
        {
            //Отключаем любую перерисовку
            //иерархического представления.
            treeView1.BeginUpdate();

            //Инициализируем новую переменную предоставляющую методы экземпляра
            //класса для создания, перемещения и перечисления
            //в каталогах и подкаталогах.
            System.IO.DirectoryInfo di;
            try
            {
                //Вызываем метод GetDirectories с передачей в качестве параметра, пути к 
                //выбранной директории. Данный метод возвращает
                //массив имен подкаталогов.
                string[] root = System.IO.Directory.GetDirectories(path);

                //Проходимся по всем полученным подкаталогам.
                foreach (string s in root)
                {
                    try
                    {
                        //Заносим в переменную информацию
                        //о текущей директории.
                        di = new System.IO.DirectoryInfo(s);
                        //Вызов метода сканирования с
                        //передачей в качестве параметра, информации
                        //о текущей директории и объект 
                        //System.Windows.Forms.TreeNodeCollection,
                        //который предоставляет узлы
                        //дерева, назначенные элементу управления 
                        //иерархического представления.
                        BuildTree(di, treeView1.Nodes);
                    }
                    catch { }
                }
            }
            catch { }
            //Разрешаем перерисовку иерархического представления.
            treeView1.EndUpdate();
        }       

        //Процесс получения папок и файлов
        private void BuildTree(System.IO.DirectoryInfo directoryInfo, TreeNodeCollection addInMe)
        {
            //Добавляем новый узел в коллекцию Nodes
            //с именем текущей директории и указанием ключа 
            //со значением "Folder".
            TreeNode curNode = addInMe.Add("Folder", directoryInfo.Name);

            //addInMe.Add(directoryInfo.FullName, directoryInfo.Name, 
            //тут можно указать номер картинки для узла из imageCollection);

            //Перебираем папки.
            foreach (System.IO.DirectoryInfo subdir in directoryInfo.GetDirectories())
            {
                //Запускам процесс получения папок и файлов 
                //с текущей найденной директории.
                BuildTree(subdir, curNode.Nodes);
            }

            //Перебираем файлы
            foreach (System.IO.FileInfo file in directoryInfo.GetFiles())
            {
                //Добавляем новый узел в коллекцию Nodes
                //С именем текущей директории и указанием ключа 
                //со значением "File".
                curNode.Nodes.Add("File", file.Name);

                //curNode.Nodes.Add("File", file.Name, 
                //тут можно указать номер картинки для узла из imageCollection);  
            }
        }
        #endregion *** TreeView ***

“運行”按鈕

 // Выполнить 
        private void button3_Click(object sender, EventArgs e)
        {            
            // Перебор выбранных узлов "treeView"
               TreeNodeCollection Nodes;
               Nodes = treeView1.Nodes;

               CheckTrueTreeNode(Nodes);
        }

招聘。 樹視圖。 CheckTrueTreeNode(TreeNodeCollection節點)

#region *** Рекруссия. treeView ***
        void CheckTrueTreeNode(TreeNodeCollection Nodes)
        {
                foreach (TreeNode tn in Nodes)
                {
                    if (tn.Checked == true)
                    {
                    // textBox1.Text += (tn.Name + " -**//**- " + path + tn.FullPath + "\r\n");  // инфо сообщение 
                    //treeView1.SelectedNode = null;
                    //treeView1.SelectedNode = tn;
                    //tn.EnsureVisible();
                    //return;

                    // путь к выбранному файлу 
                    pathFileData = path + tn.FullPath;

                    // BackgroundWorker. Старт
                    bw_start();

                    }

                    CheckTrueTreeNode(tn.Nodes);
                }
        }
        #endregion *** Рекруссия ***

啟動“ BackgroundWorker”。 bw_start()

private void bw_start()
         {
                // bw = new BackgroundWorker[];                
                i++;

                //новый поток
                bw[i] = new BackgroundWorker();
                bw[i].WorkerReportsProgress = true;
                bw[i].WorkerSupportsCancellation = true;

                bw[i].DoWork += new DoWorkEventHandler(bw_DoWork); 
                bw[i].RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); //обработчик 
                bw[i].ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);

                if (bw[i].IsBusy != true)
                bw[i].RunWorkerAsync();
        }

        private void bw_DoWork(object sender, DoWorkEventArgs e)
            {
                DataTable table_1;

                //привязка данных
                BindingSource bs;


                table_1 = new DataTable();
                table_1.Columns.Add("Content", typeof(string));
                table_1.Columns.Add("DateTime", typeof(DateTime));

                bs = new BindingSource(table_1, "");


                // Читаем файл "Данные"
                string[] lines = System.IO.File.ReadAllLines(pathFileData);

                // System.Console.WriteLine("Contents of WriteLines2.txt = ");
                foreach (string line in lines)
                {
                    // создаем новую запись
                    DataRow newrow = table_1.NewRow();

                    // заполняем ее данными
                    newrow["Content"] = line;
                    newrow["DateTime"] = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");

                    // заносим запись в таблицу
                    table_1.Rows.Add(newrow);

                    // обновляем данные в грид
                    bs.ResetBindings(false);

                    // Пауза
                    System.Threading.Thread.Sleep(1500);
                    Application.DoEvents();
                }
            }

        private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {

            }

        static void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
            {

            }

段落:“程序正在執行將行從“數據”文件移動到“日期表”的過程時,用戶可以使用光標瀏覽樹。如果用戶輸入已經存在的過程的“數據”文件開始時,“ panel3”中會顯示“ GridUserControl”,並以“

Provides 
// События TreeView/ Происходит после выбора узла дерева.
        private void TreeView1_AfterSelect(Object sender, TreeViewEventArgs e)
        {
            panel1.Controls.Clear();

            GridUserControl GridUsCont = new GridUserControl(????);

            panel1.Controls.Add(GridUsCont);

        }

* GridUserControl.cs *

namespace TreeView_FolderTree
{
    public partial class GridUserControl : UserControl
    {

        public string pathFileData;

        public GridUserControl(string pathFileData)
        {
            InitializeComponent();

            // Обрабатываем данные
            //Или записываем их в поле
* *         this.pathFileData = pathFileData;

        }

        private void GridUserControl_Load(object sender, EventArgs e)
        {
            start_GridUserControl();
        }

        public void start_GridUserControl()
        {            
            // dataGridView1
            dataGridView1.DataSource = bs;
            dataGridView1.Columns["DateTime"].DefaultCellStyle.Format = "dd.MM.yyyy HH:mm:ss tt";            

        }


    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM