TreeView Checkbox Checked File и B папок Загрузка в ListView в C # -- c# поле с участием treeview пол Связанный проблема

Treeview checkbox checked file and folder load in listview in C#


0
vote

проблема

русский

Я хочу сделать аудиторский инструмент, который направлен на копирование файлов и папок.

Я использую TreeView для загрузки файлов и папок с использованием метода рекурсии, но когда TreeView проверил файлы и папки нагрузки в ListView, которые требуют огромных раз (21 минуты для 2 ГБ). Это проблема.

Как загружать файлы и папки из TreeView, чтобы ListView в кратчайшие сроки для более быстрого расчета?

Вот мой код:

 <код> private void btnAddToListViewCheckedItem_Click(object sender, EventArgs e) {     foreach (TreeNode tn in tvLoadTreeviewFromListView.Nodes)     {          AddToListView(tn);     } }  private void AddToListView(TreeNode tn) {      {          FileInfo file = new FileInfo(tn.Text);          string[] suffix = { "B", "KB", "MB", "GB", "TB" };         if (file.Exists)         {             int s = 0;             long size = file.Length;             while (size >= 1024)             {                 NO_OF_FILES += 1;                 s++;                 size /= 1024;             }                String countFileSize = string.Format("{0}{1}", size, suffix[s]);               ListViewItem item = lvLoadSelectedFileAndFolder.Items.Add(file.Name);              item.ImageIndex= sysIcons.GetIconIndex(tn.Text);             item.SubItems.Add(tn.Text);             item.SubItems.Add(countFileSize);          }          foreach (TreeNode tnx in tn.Nodes)         {               for (int i = 0; i < lvLoadSelectedFileAndFolder.Items.Count; i++)             {                 int ii = 1;                 if (tnx.Text == lvLoadSelectedFileAndFolder.Items[i].SubItems[ii].Text)                 {                     return;                  }             }               if (tnx.Checked)             {                  AddToListView(tnx);             }          }     }     catch (Exception ){}  }   
Английский оригинал

I want to make an audit tool that aims to copy files and folders.

I use treeview to load files and folders using recursion method, but when treeview checked files and folders load in listview that requires huge times (21 minutes for 2GB). That is a problem.

How to load files and folders from treeview to listview within shortest time for faster calculation ?

Here's my code:

private void btnAddToListViewCheckedItem_Click(object sender, EventArgs e) {     foreach (TreeNode tn in tvLoadTreeviewFromListView.Nodes)     {          AddToListView(tn);     } }  private void AddToListView(TreeNode tn) {      {          FileInfo file = new FileInfo(tn.Text);          string[] suffix = { "B", "KB", "MB", "GB", "TB" };         if (file.Exists)         {             int s = 0;             long size = file.Length;             while (size >= 1024)             {                 NO_OF_FILES += 1;                 s++;                 size /= 1024;             }                String countFileSize = string.Format("{0}{1}", size, suffix[s]);               ListViewItem item = lvLoadSelectedFileAndFolder.Items.Add(file.Name);              item.ImageIndex= sysIcons.GetIconIndex(tn.Text);             item.SubItems.Add(tn.Text);             item.SubItems.Add(countFileSize);          }          foreach (TreeNode tnx in tn.Nodes)         {               for (int i = 0; i < lvLoadSelectedFileAndFolder.Items.Count; i++)             {                 int ii = 1;                 if (tnx.Text == lvLoadSelectedFileAndFolder.Items[i].SubItems[ii].Text)                 {                     return;                  }             }               if (tnx.Checked)             {                  AddToListView(tnx);             }          }     }     catch (Exception ){}  } 
</div
     

Список ответов

0
 
vote

Ваш <код> suffix массива в основном постоянна, но будет перераспределена на куче каждый раз <код> AddToListView обрабатывает имя файла, которое существует. Также приостановить обновления пользовательских интерфейсов при загрузке ListView. Попробуйте это ...

 <код> const string[] suffix = { "B", "KB", "MB", "GB", "TB" };  private void btnAddToListViewCheckedItem_Click(object sender, EventArgs e) {     try     {         lvLoadSelectedFileAndFolder.BeginUpdate();         foreach (TreeNode tn in tvLoadTreeviewFromListView.Nodes)         {             AddToListView(tn);         }     }     finally     {         lvLoadSelectedFileAndFolder.EndUpdate();     } }   
 

Your suffix array is basically a constant but will be reallocated on the heap every time AddToListView processes a filename that exists. Also, suspend UI updates while loading the listview. Try this ...

const string[] suffix = { "B", "KB", "MB", "GB", "TB" };  private void btnAddToListViewCheckedItem_Click(object sender, EventArgs e) {     try     {         lvLoadSelectedFileAndFolder.BeginUpdate();         foreach (TreeNode tn in tvLoadTreeviewFromListView.Nodes)         {             AddToListView(tn);         }     }     finally     {         lvLoadSelectedFileAndFolder.EndUpdate();     } } 
</div
 
 
   
   

Связанный проблема

2  Компиляция страницы ASPX не удается  ( Aspx page compilation fails ) 
Мы разрабатываем веб-приложение, которое позволяет администраторам загружать плагины. Все плагины хранятся в специальной папке вне корня приложения (скажем, C...

2  Разрешения папки - некоторые или все ссылки на идентичность не могут быть переведены  ( Folder permissions some or all identity references could not be translated ) 
Я хотел бы установить папку ACL на удаленном сервере для пользователя домена, но всегда получайте следующее сообщение об ошибке: Некоторые или все ссылки н...

0  Внедрить свойство с пользовательским атрибутом  ( Implement property with custom attribute ) 
Может быть, я получаю концепцию пользовательских атрибутов не так, но я подумал, что это должно быть что-то, что было бы возможно: У меня есть класс со стро...

770  Файл метаданных '.dll' не может быть найден  ( Metadata file dll could not be found ) 
Я работаю над проектом WPF, C # 3.0, и я получаю эту ошибку: <код> Error 1 Metadata file 'WORK=- ToolsVersionManagementSystemBusinessLogicLayerinDebug Busi...

0  Неправильный выход LINQ сумма  ( Wrong output linq sum ) 
У меня есть эти данные ниже и сумма запроса LINQ. Но я не знаю, почему его вывод не то, что я ожидал. <Сильные> данные на DatateFaled - Tourndays - отме...

2  Как создать файл XPS с веб-страницы, используя C #?  ( How to create xps file from web page using c ) 
Как создать файл XPS с веб-страницы, используя C #? Любые идеи? ...

1  C # WPF Toolkit DataGrid - Группа внутри группы?  ( C sharp wpf toolkit datagrid group inside group ) 
У меня есть группа, в которой есть элементы внутри нее, и я бы хотел, чтобы эта группа была подгруппа. <Сильные> Основные группы : «Windows», «Linux», «MAC»...

1  Как я могу нарисовать кружком на моем приложении Bing Map вокруг центральной точки с радиусом, приведенным в милях  ( How do i draw a circle on my bing map application around a centerpoint with a ra ) 
Я смог нарисовать эллипс на моей карте, используя значения широты и долготы вокруг данной центральной точки. Хотя я вижу форму на карте, я получаю эллипс вмес...

2  Dotnetzip - чтение на память  ( Dotnetzip reading to memory ) 
Я собрал быстрый тест, используя библиотеку Dotnetzip, которая открывает ZIP-файл, полный файлов .bmp и преобразует их в формат .jpg. До этого я писал все ф...

0  DataGridTextColumn с десятичным значением, разрешить отсутствие ввода  ( Datagridtextcolumn with decimal value allow no entry ) 
Использование .NET 4.6. У меня есть DataGridTextColumn, связанный с decimal? свойства. (Мне нужна помощь от этого Ссылка , чтобы вообще работать.) Можно ...

157  Попытался прочитать или писать защищенную память. Это часто является признаком того, что другая память повреждена  ( Attempted to read or write protected memory this is often an indication that ot ) 
Я надеюсь, что кто-то может просветить меня относительно того, что может вызвать эту ошибку: попытался прочитать или писать защищенную память. Это часто яв...

3  Как использовать различные настройки приложения для различных конфигураций сборки?  ( How to use different application settings for different build configurations ) 
В верхней части афоризма - вкладка (красная) свойств проекта Есть 2 серых раскрывающихся коробки (зеленые), которые я хотел бы использовать. Я хочу измен...

2  Получение G-WAN для работы с моно  ( Getting g wan to work with mono ) 
Я следовал инструкциям на сайте G-WAN FAQ и прочитал руководство, но я не могу получить G-WAN, чтобы «увидеть» мономонтаж на мою установку Debian 6 (x64). Я...

4  Какую книгу на TDD для C # с лечением издевателей  ( What book on tdd for c sharp with treatment of mocks ) 
Можете ли вы помнить книгу о тестировании подразделения и TDD для C #, по крайней мере, некоторое лечение отдельных объектов? Я видел эту Вопрос Но, похож...

1  Получите только имя от LDAP в ASP.NET C #  ( Get just the name from ldap in asp net c sharp ) 
Я хочу диаметровать все имена, которые совпадают с именем, имеющим имя с именем пользователя с сервера каталогов, используя LDAP и связывают его к виду сетки....

Связанный проблема

2  Компиляция страницы ASPX не удается 
2  Разрешения папки - некоторые или все ссылки на идентичность не могут быть переведены 
0  Внедрить свойство с пользовательским атрибутом 
770  Файл метаданных '.dll' не может быть найден 
0  Неправильный выход LINQ сумма 
2  Как создать файл XPS с веб-страницы, используя C #? 
1  C # WPF Toolkit DataGrid - Группа внутри группы? 
1  Как я могу нарисовать кружком на моем приложении Bing Map вокруг центральной точки с радиусом, приведенным в милях 
2  Dotnetzip - чтение на память 
0  DataGridTextColumn с десятичным значением, разрешить отсутствие ввода 
157  Попытался прочитать или писать защищенную память. Это часто является признаком того, что другая память повреждена 
3  Как использовать различные настройки приложения для различных конфигураций сборки? 
2  Получение G-WAN для работы с моно 
4  Какую книгу на TDD для C # с лечением издевателей 
1  Получите только имя от LDAP в ASP.NET C #