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

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

16.05.2016, 12:52. Просмотров 1187. Ответов 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
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
01.06.2016, 07:41  [ТС] 21
Решил не заморачиваться с дополнительными контролами и оставить webbrowser. SharpDevelop подглючивать стал, когда в сборку добавил дополнительные dll. Или криво добавил, хотя, двух путей там нет. К тому же, exe из папки bin не работает без библиотек, лежащих рядом. Наверное, по окончанию можно как-то вшить эти библиотеки в результат, но не знаю. Никогда не доходил до реализации решения, всегда брал последний скомпилированный файлик из debug и норм.
вопрос остался, кстати:
Цитата Сообщение от eenk Посмотреть сообщение
Я знаю, есть какое-то магическое слово, чтобы WebBrowser открыл это, но не могу найти. Часа четыре убил.
0
diadiavova
3767 / 1322 / 414
Регистрация: 11.04.2015
Сообщений: 2,463
Записей в блоге: 35
01.06.2016, 11:27 22
Цитата Сообщение от eenk Посмотреть сообщение
SharpDevelop подглючивать стал
Шарпдевелоп мало кто использует, поэтому когда возникают проблемы с этой средой, решать их чаще всего придется самостоятельно.
Цитата Сообщение от eenk Посмотреть сообщение
К тому же, exe из папки bin не работает без библиотек, лежащих рядом.
Ну они и должны быть рядом, студия копирует их всегда.
Цитата Сообщение от eenk Посмотреть сообщение
Никогда не доходил до реализации решения, всегда брал последний скомпилированный файлик из debug и норм.
Вообще-то надо установочный пакет создавать. Он как раз и нужен для того, чтобы все подобные проблемы решить.
Цитата Сообщение от eenk Посмотреть сообщение
Я знаю, есть какое-то магическое слово, чтобы WebBrowser открыл это, но не могу найти. Часа четыре убил.
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}

Правда не могу сказать точно, сработает ли это с браузером
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
01.06.2016, 13:15  [ТС] 23
Цитата Сообщение от diadiavova Посмотреть сообщение
Правда не могу сказать точно, сработает ли это с браузером
не сработало.
System.ArgumentException: Значение не попадает в ожидаемый диапазон.
в System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)
в System.Windows.Forms.WebBrowser.PerformNavigate2(Object& URL, Object& flags, Object& targetFrameName, Object& postData, Object& headers)
в System.Windows.Forms.WebBrowser.Navigate(String urlString)
нет, там простая фраза какая-то. типа "about: My computer" или как-то так.
0
diadiavova
3767 / 1322 / 414
Регистрация: 11.04.2015
Сообщений: 2,463
Записей в блоге: 35
01.06.2016, 13:38 24
Цитата Сообщение от eenk Посмотреть сообщение
нет, там простая фраза какая-то. типа "about: My computer" или как-то так.
Попробуй ввести это в проводник
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
01.06.2016, 13:42  [ТС] 25
Цитата Сообщение от diadiavova Посмотреть сообщение
ввести это в проводник
в IE тогда уж. Я пробовал разные комбинации в адресной строке ie, бинг уже задолбал.
0
diadiavova
3767 / 1322 / 414
Регистрация: 11.04.2015
Сообщений: 2,463
Записей в блоге: 35
01.06.2016, 13:44 26
Цитата Сообщение от eenk Посмотреть сообщение
в IE тогда уж.
В IE не работает, но если введешь в проводник, то увидишь, что это приведет тебя куда надо
0
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
01.06.2016, 17:15  [ТС] 27
Цитата Сообщение от diadiavova Посмотреть сообщение
это приведет тебя куда надо
В проводнике привело А в контроле не хочет
PS похоже на ключ реестра.
0
diadiavova
3767 / 1322 / 414
Регистрация: 11.04.2015
Сообщений: 2,463
Записей в блоге: 35
01.06.2016, 17:23 28
Ну значит таки адрес я тебе правильный дал )) А то, что он в браузере не хочет отображаться, так браузер вроде как не для этого предназначен.
0
Yury Komar
Модератор
Эксперт .NET
2376 / 2182 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
04.06.2016, 00:59 29
а почему используя webbrowser не хранить массив папок и просто не собирать путь при вызове той или иной и передавать его в webbrowser.navigate? получится так же, как в Windows7 и выше в адресной строке, кликнул на тмя папки, перешел к ней, а не просто назад вперед.
а вообще, не тяжело ведь написать простой ЛистВью, заполнить его элементами текущей папки и присвоить значки взяв их из системы и тогда у вас полная свобода действий, как хотите, так и программируйте его дальше.
0
vova2112
113 / 105 / 30
Регистрация: 28.02.2014
Сообщений: 131
05.06.2016, 12:51 30
vb.net
1
WebBrowser1.Navigate("shell:MyComputerFolder")
3
eenk
1 / 1 / 0
Регистрация: 14.05.2016
Сообщений: 36
14.09.2016, 10:47  [ТС] 31
Цитата Сообщение от Yury Komar Посмотреть сообщение
не тяжело ведь написать простой ЛистВью
не тяжело. я пробовал - тормозит при заполнении. папки-то бывают - ого-го.

Добавлено через 2 минуты
Цитата Сообщение от vova2112 Посмотреть сообщение
shell:MyComputerFolder
вот оно! Спасибо!
0
Yury Komar
Модератор
Эксперт .NET
2376 / 2182 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
14.09.2016, 13:10 32
eenk, тормозит потому что отрисовуа идет. Вызывайте Invalidate или DoubleBuffering.

Добавлено через 2 минуты
а еще лучще не рисовать по строчно в лист, а собрать массив строк в памяти и пачкой выгрузить в лист, это быдет ОЩУТИМО быстро... а рисовать построчно - это реально долго, если строк много... это представьте сколько раз нужно перерисовать ваш контрол? а пачкой - всего один раз при добавлении через .AddRange()
0
14.09.2016, 13:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2016, 13:10

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

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

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


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

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

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