Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Как в WebBrowser открыть файл


Автор: Barabeo 12.3.2012, 12:37
Код

webBrowser1.Navigate(path);

Таким макаром, не открывает - пишет не найден путь. Если задать абсолютный путь - тогда всё ОК. Такое не подходит.

Код

FileStream webfile = new FileStream(path, FileMode.Open, FileAccess.Read);
webBrowser1.DocumentStream = webfile;

Таким макаром открывает белиберду - то же не идет.

Есть ли ещё какие методы для открытия файлов .mht в webBrowser.

Автор: infarch 12.3.2012, 13:58
Чем плох абсолютный путь? Можно пример того что вы пытаетесь открыть?

Автор: Barabeo 12.3.2012, 14:32
Цитата(infarch @ 12.3.2012,  13:58)
Чем плох абсолютный путь? Можно пример того что вы пытаетесь открыть?

Открыть пытаюсь файл из ListView в webBrowser.
Т.е. у меня эдакий файл-броузер для .mht - шных файлов.

Код

private void listView_OnItemActivate(object sender, EventArgs e)
        {
          
            foreach(ListViewItem lvi in listView.SelectedItems)
            {
                string ext = Path.GetExtension(lvi.Text).ToLower();
                string path = Path.Combine(fullPath, lvi.Text);
                webBrowser1.Navigate(new Uri(path));
            }
               


Код

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

Автор: infarch 12.3.2012, 14:39
Вижу что вы заполняете Tag но в дальнейшем его не используете. Почему не сохранить туда полный путь и потом использовать его при открытии?

Автор: Barabeo 12.3.2012, 15:19
Спасибо.
Заработало:
Код

            System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
            string path = lw.SelectedItems[0].Tag.ToString();
           
            if (lw.SelectedItems[0].ImageIndex != 0) 
            {
                try
                {
                    webBrowser1.Navigate(path);
                }
                catch (Exception ex)
                {
                    ex.ToString();
                }
            };

Автор: Barabeo 12.3.2012, 15:36
Еще один косяк - после открытия иногда второго или третьего файла вывалиывется с исключением:

System.ArgumentOutOfRangeException не обработано
  Message="InvalidArgument=Значение \"0\" недопустимо для \"index\".\r\nИмя параметра: index"
  Source="System.Windows.Forms"
  ParamName="index"


на этой строке:
Код

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


В чем может быть проблема?

Автор: infarch 12.3.2012, 16:17
Очевидно - lw.SelectedItems пустой. Почему - это уже другой вопрос. Надо код копать.

Автор: Barabeo 15.3.2012, 12:29
Цитата(infarch @ 12.3.2012,  16:17)
Очевидно - lw.SelectedItems пустой. Почему - это уже другой вопрос. Надо код копать.

Нашел строку где удалятся Item'ы:

Код

 listView.Items.Clear();


Код

 //при выделении директории в 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())


Может в этом беда?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)