Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> webBrowser висит, webBrowser + listView 
:(
    Опции темы
Barabeo
Дата 16.3.2012, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Вот весь код. Выделяю в listView файл - он отображается в webBrowser.
Первый проходит нормально, второй тоже, а вот на третий раз прога подвисает.
Что я здесь намутил?
Помогите найти ошибки.

Код

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;


namespace Qu
{
    public partial class Form1 : Form
    {
        string fullPath;

        public Form1()
        {
            InitializeComponent();
            DriveTreeInit();
        }

        //метод инициализации дерева DriveTreeInit
        public void DriveTreeInit()
        {
            string[] drivesArray = Directory.GetLogicalDrives();

            tView.BeginUpdate();
            tView.Nodes.Clear();

            foreach (string s in drivesArray)
            {
                TreeNode drive = new TreeNode(s, 0, 0);
                tView.Nodes.Add(drive);

                GetDirs(drive);
            }

            tView.EndUpdate();
        }

        //получение списка каталогов
        public void GetDirs(TreeNode node)
        {
            DirectoryInfo[] diArray;
            node.Nodes.Clear();

            string fullPath = node.FullPath;
            DirectoryInfo di = new DirectoryInfo(fullPath);

            try
            {
                diArray = di.GetDirectories();
            }
            catch
            {
                return;
            }

            //каталоги
            foreach (DirectoryInfo dirinfo in diArray)
            {
                TreeNode dir = new TreeNode(dirinfo.Name, 1, 2);
                node.Nodes.Add(dir);
            }
        }

        //обработчик события OnBeforeExpand
        private void tView_OnBeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            tView.BeginUpdate();

            foreach (TreeNode node in e.Node.Nodes)
            {
                GetDirs(node);
            }

            tView.EndUpdate();
        }

        //при выделении директории в treeView, заполняет listView содержимым выделенной директории 
        private void tView_OnAfterSelect(object sender, TreeViewEventArgs e)
        {
            try
            {
                TreeNode selectedNode = e.Node;
                fullPath = selectedNode.FullPath;
                DirectoryInfo di = new DirectoryInfo(fullPath);

                listView.Items.Clear();

                //Заполняем ListView файлами
                foreach (FileInfo fileInfo in di.GetFiles())
                {
                    ListViewItem lvi = new ListViewItem(fileInfo.Name);
                    lvi.ImageIndex = 3;
                    lvi.Tag = fileInfo.FullName;
                    this.label1.Text = fullPath;

                    if (selectedNode.IsSelected)
                    {
                        string ext = fileInfo.Extension.ToLower();

                        switch (ext)
                        {
                            case ".mht":
                                {
                                    listView.Items.Add(lvi);                                   
                                    break;
                                }
                            case ".htm":
                                {
                                    listView.Items.Add(lvi);
                                    break;
                                }
                            case ".html":
                                {
                                    listView.Items.Add(lvi);
                                    break;
                                }
                        }  
                    }              
                }
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
        }

        private void listView_ItemActivate(object sender, EventArgs e)
        {

            System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
            int i;
            i = lw.TopItem.Index; 
            string path = lw.SelectedItems[i].Tag.ToString();
            webBrowser1.Navigate(path);
            
        }
 
    }
}


И еще вопрос нужно ли диспозить webBrowser после каждого открытия страницы?
PM MAIL   Вверх
Barabeo
Дата 16.3.2012, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Нашел возможную проблему висяка.
Контрольная точка на строке 

Код

string path = lw.SelectedItems[i].Tag.ToString();


Дает следующее:
base {System.Windows.Forms.Control} = {System.Windows.Forms.ListView, Items.Count: 3, Items[0]: ListViewItem: {Hiren's BootCD From USB F}

Причем в Items[0] всегда 0, какой бы файл я не выбирал. 

MSDN:
Свойство SelectedIndices не будет содержать никаких индексов, если доступ к нему осуществлялся раньше, чем был создан дескриптор элемента управления ListView, что обычно происходит, когда элемент управления ListView был первоначально загружен для отображения в форме.

А уменя ListView появляется в tView_OnAfterSelect.

В этом ли дело?
И как решить эту проблему?




Это сообщение отредактировал(а) Barabeo - 16.3.2012, 14:13
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.