Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
1

Проводник средствами контрола WebBrowser

16.05.2016, 12:52. Просмотров 1188. Ответов 31
Метки нет (Все метки)

Если в VB6 были контролы FileListBox, DirListBox, DriveList, с помощью которых можно было бродить по содержимому дискового пространства компьютера, то в vb.net их net.
В качестве альтернативы MSDN предлагает программное заполнение Listbox и ListView содержимым файловой системы компьютера. Однако, на деле это очень громоздко, медленно и хлопотно. И результат получается некрасивый.
С помощью WebBrowser тоже можно ходить по дискам, если добавить, до кучи, пару кнопок для "обслуживания": Назад и Вперед
Стартовать контрол может с любой удобной папки, например "Мои документы"
vb.net
1
2
CurrPath=My.Computer.FileSystem.SpecialDirectories.MyDocuments
WebBrowser1.Navigate(CurrPath)
для удобства можно добавить кнопку Вверх, с примерно таким кодом:
vb.net
1
2
3
4
5
6
7
Dim Nm As Integer=-1
        Dim Pth As String=WebBrowser1.Url.ToString().Remove(0,8).Replace("/","[I]обратный слэш[/I]") 'первые 8 символов, это "///file:", замена слэшей для других целей (использую, вкупе старый FileListBox)
        If Pth.EndsWith("обратный слэш")=True Then Exit Sub
        Nm=Pth.LastIndexOf("обратный слэш"): If Nm<0 Then Exit sub
        Pth=Pth.Remove(Nm)
        If Pth.Contains("обратный слэш")=false Then Pth=Pth &"" 'это на случай, если окажемся в корне диска, типа C:\ и предыдущая команда отрубит слэш
        Explorer.Navigate(Pth)
в конструкции My.Computer.FileSystem.SpecialDirectories имеется ряд других папок, с которых можно начать навигацию. Но нет такой, по которой WebBrowser показал бы такой набор:
Проводник средствами контрола WebBrowser

с этой картинки было бы наиболее удобно начинать.
Я знаю, есть какое-то магическое слово, чтобы WebBrowser открыл это, но не могу найти. Часа четыре убил.
---
обратный слэш - сайт, почему-то, удаляет этот символ '\, когда он в кавычках
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2016, 12:52
Ответы с готовыми решениями:

Внедрение в Проводник
Делаем антивирус, устали уже):wall: надо вот что сделать: Если пользователь в...

Перетаскивание файла с формы в проводник Windows
Помогите! Нигде не могу найти. Как копировать файл перетаскиванием его имени...

Открыть проводник по пути, введенному в поле диалогового окна
Всемм доброй ночи. Пишу я это в 1.13 и вот я почти закончил программу но есть...

Добавление контрола из потока
Всем здравствуйте! Столкнулась с проблемой добавления готового usercontrol(a)...

Добавление своего контрола
Если я наследую от какого-либо контрола, то смогу ли размещать его как и...

31
Shersh
Заблокирован
16.05.2016, 13:08 2
Цитата Сообщение от eenk Посмотреть сообщение
обратный слэш - сайт, почему-то, удаляет этот символ '\, когда он в кавычках
Приходится использовать костыль, чтобы отобразить обратный слэш перед кавычками -
пишем два слэша "\\" чтобы увидеть один "\".
Этот баг почему то упорно игнорируется?
1
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
16.05.2016, 14:36  [ТС] 3
ага! Учту в дальнейшем.

Добавлено через 1 час 4 минуты
я, в общем-то, хотел спросить, что надо написать вот тут: .Navigate(?????) чтобы перейти на список дисков.
может, еще, какие-нибудь интересные команды для webbrowser знаете?

Добавлено через 18 минут
и, еще:
кто-нибудь знает, как управлять WebBrowser'ом в режиме проводника?
менять вид (Список-Таблица-Мелкие значки-итд), показать системные/скрытые/архивные файлы и так далее?
0
Shersh
Заблокирован
16.05.2016, 14:51 4
Если просто попрободить, то
vb.net
1
Process.Start("C:")
чем не выход?
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
16.05.2016, 15:01  [ТС] 5
не, ну просто побродить можно и проводником, конечно
мне нужен в программе встроенный проводник, чтобы определить место, которое программа будет "обслуживать". Давно я себе написал такую программулину в VB6
File tracer.zip
ну, устарела она уже. и хочется добавить еще кое-каких функций для обработки файлов.
0
Shersh
Заблокирован
16.05.2016, 15:15 6
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
0
Orlangur1991
1155 / 1051 / 253
Регистрация: 28.11.2014
Сообщений: 1,642
16.05.2016, 15:58 7
eenk, Почему не использовать FolderBrowserDialog? Если Вам просто нужно выбрать папку
vb.net
1
2
3
4
Dim SFD As New FolderBrowserDialog
        If SFD.ShowDialog = Windows.Forms.DialogResult.OK Then
            TextBox1.Text = SFD.SelectedPath
        End If
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
16.05.2016, 16:14  [ТС] 8
Выбрать саму папку можно диалогом, конечно.
Но в процессе работы, в окне программы нужно будет отображать текущее состояние контролируемой папки.
примерно так:
Проводник средствами контрола WebBrowser

1 - WebBrowser
2 - старый контрол FileListBox
3 - кнопа, открывающая folderBrowserDialog
0
diadiavova
3768 / 1323 / 414
Регистрация: 11.04.2015
Сообщений: 2,469
Записей в блоге: 35
16.05.2016, 19:53 9
eenk, с помощью менеджера пакетов NuGet установи пакет Microsoft.WindowsAPICodePack-Shell. На панель элементов добавь контролы из этой библиотеки, там будет ExplorerBrowser. Это как раз то, что тебе нужно. Там тоже есть метод Navigate, который можно использовать примерно так
vb.net
1
 Me.ExplorerBrowser1.Navigate(ShellObject.FromParsingName("c:"))
Предварительно импортировав
vb.net
1
Imports Microsoft.WindowsAPICodePack.Shell
2
Zefirr
0 / 0 / 0
Регистрация: 02.10.2015
Сообщений: 7
26.05.2016, 09:57 10
Можно поподробней? Искал, и не нашёл данный контролл. А Webbrowser никак не хочет открывать папку(при дабл клике) внутри себя, запускает проводник.
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
26.05.2016, 10:03  [ТС] 11
у меня открывает. может, в свойствах чего не так?
Проводник средствами контрола WebBrowser
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
26.05.2016, 10:08  [ТС] 12
вот тут, кстати, есть бесплатный Explorer Tree Control.
0
Zefirr
0 / 0 / 0
Регистрация: 02.10.2015
Сообщений: 7
26.05.2016, 10:11 13
Свойства перерыл вдоль и поперёк, нет там ничего нужного. У меня тоже на одной машине открывает на другой нет. Свой проводник писать не очень хочется.
0
diadiavova
3768 / 1323 / 414
Регистрация: 11.04.2015
Сообщений: 2,469
Записей в блоге: 35
26.05.2016, 10:11 14
Цитата Сообщение от Zefirr Посмотреть сообщение
Можно поподробней?
  1. Открываешь обозреватель решений.
  2. Находишь проект, в котором будешь использовать контрол.
  3. Правый клик по проекту открывает контекстное меню, в нем надо найти Управление пакетами NuGet
  4. В строке поиска интерфейса управления пакетами вводишь Microsoft.WindowsAPICodePack-Shell
  5. Устанавливаешь пакет.
  6. Дальше переходишь на панель элементов, в контекстном меню которого находишь пункт Выбрать элементы.
  7. В открывшемся окне во вкладке Компоненты .Net Framework жмешь кнопку Обзор... и выбираешь библиотеку, добавленную с помощью менеджера пакетов, после чего элементы из этой библиотеки станут доступными на панели элементов.
1
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
26.05.2016, 15:28  [ТС] 15
diadiavova, спасибо. установил, работает.
где бы разузнать про его свойства и методы?

вот полный путь места, где мы находимся.
Добавлено через 48 минут
vb.net
1
Explorer.NavigationLog.CurrentLocation.ParsingName
вот имя отображаемой папки или имя диска с буквой [System (C: ), например], если мы в корне.
vb.net
1
Explorer.NavigationLog.CurrentLocation.Name
как заставить контрол "шагнуть" назад или вперед? Типа того:
vb.net
1
Webbrowser1.GoBack
0
diadiavova
3768 / 1323 / 414
Регистрация: 11.04.2015
Сообщений: 2,469
Записей в блоге: 35
26.05.2016, 21:42 16
Цитата Сообщение от eenk Посмотреть сообщение
спасибо. установил, работает.
Странно, я думал, ты уже давно установил и давно работает ))
Цитата Сообщение от eenk Посмотреть сообщение
где бы разузнать про его свойства и методы?
Ну во-первых, он поставляется с XML-документацией, то есть краткие пояснения доступны и из браузера объектов и прямо из редактора кода во всплывающих подсказках. Кое-что, по видимому, можно узнать из официального блога.
Цитата Сообщение от eenk Посмотреть сообщение
как заставить контрол "шагнуть" назад или вперед?
Ну опять-таки, уже известное тебе свойство NavigationLog, представляет объект, кое-что знающий о пердыдущих локациях, коллекция которых содержится в его свойстве Locations. Кроме того, у него есть свойство CurrentLocationIndex, а у ExplorerBrowser есть метод, который может перейти к любому индексу лога NavigateLogLocation. Могу ошибаться, но мне кажется, что, имея эту информацию, вполне можно догадаться как ответить на твой вопрос ))
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
27.05.2016, 13:54  [ТС] 17
Цитата Сообщение от diadiavova Посмотреть сообщение
ты уже давно установил и давно работает ))
я на работе, поэтому мало времени на программку остается. и, второе: нет админских прав, отсюда пара проблем вылазит. Visual studio у меня нет, потому что установить никак; новые библиотеки прописать тоже - никак; и в интернете не все сайты открываются, потому как - политика, мать ее, конфиденциальности.
Пользую Sharp development, там структура интерфейса немножко другая. Но, вот, вчера разобрался. и NuGet тут есть.

Добавлено через 6 часов 58 минут
копаю, пробую. (explorer=ExplorerBrowser control)
Назад, Вперед:
vb.net
1
2
Explorer.NavigateLogLocation(Explorer.NavigationLog.CurrentLocationIndex-1)
Explorer.NavigateLogLocation(Explorer.NavigationLog.CurrentLocationIndex+1)
Если "вперед" некуда, ошибку не выдает, что радует.
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
29.05.2016, 08:55  [ТС] 18
Почему-то среда выдает ошибку:
Невозможно загрузить файл ShellObjectFactory.cs из c:\projects\Windows API Code Pack 1.1\source\WindowsAPICodePack-NuGet\Shell\Common. Проверьте права доступа и существование этого файла.
и проект не запускается.

Microsoft.WindowsAPICodePack.Shell.ShellException: Unable to Create Shell Item. ---> System.IO.FileNotFoundException: Не удается найти указанный файл. (Исключение из HRESULT: 0x80070002)
--- Конец трассировки стека внутреннего исключения ---
в Microsoft.WindowsAPICodePack.Shell.ShellObjectFactory.Create(String parsingName) в c:\projects\Windows API Code Pack 1.1\source\WindowsAPICodePack-NuGet\Shell\Common\ShellObjectFactory.cs:строка 176
в Microsoft.WindowsAPICodePack.Shell.ShellObject.FromParsingName(String parsingName) в c:\projects\Windows API Code Pack 1.1\source\WindowsAPICodePack-NuGet\Shell\Common\ShellObject.cs:строка 30
в f3.MainForm.MainFormLoad(Object sender, EventArgs e)
в System.EventHandler.Invoke(Object sender, EventArgs e)
в System.Windows.Forms.Form.OnLoad(EventArgs e)
в System.Windows.Forms.Form.OnCreateControl()
в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
в System.Windows.Forms.Control.CreateControl()
в System.Windows.Forms.Control.WmShowWindow(Message& m)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.ScrollableControl.WndProc(Message& m)
в System.Windows.Forms.Form.WmShowWindow(Message& m)
в System.Windows.Forms.Form.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Когда в первый раз такое было, я удалил пакеты Microsoft.WindowsAPICodePack.Shell, контрол удалил. Потом заново все установил и поработало два раза. И, снова.
папки c:\projects\Windows API Code Pack 1.1\source\WindowsAPICodePack-NuGet\Shell\Common у меня не существует, да и файла такого на компьютере нигде нет.
Скачал его, создал указанные папки, положил туда этот файлик. Сборка запускается. Надолго ли?

Подозреваю, что это косячок SharpDevelop...
0
Zefirr
0 / 0 / 0
Регистрация: 02.10.2015
Сообщений: 7
30.05.2016, 10:24 19
Можно ли скрыть части окна только в ExplorerBrowser? Сейчас любые настройки отображаются и в проводнике Windows.
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
30.05.2016, 12:39  [ТС] 20
Цитата Сообщение от Zefirr Посмотреть сообщение
любые настройки отображаются и в проводнике Windows
думаю, этот контрол работает на одной базе с проводником windows.
0
30.05.2016, 12:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2016, 12:39

Добавление контрола в тулбокс
День добрый, при создании своего контрола в &quot;добавить пользовательский элемент...

Есть ли в Webbrowser проводник DOM как в IExplore?
Всем привет есть ли в Webbrowser проводник DOM как в iexplore и как можно от...

Как получить содержимое фрейма из контрола WebBrowser?
Кстати, на Delphi таже самая история. Так что пока нет выхода? Может всё же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru