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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenFileDiolog - передать путь не файла (ов) а дир, как передать путь к папке выбранной юзер 
V
    Опции темы
Мурлыкатам_
Дата 18.11.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

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



Для передачи строковых значений путей к передаваемым на сервер файлам использую - OpenFileDialog, возникает вопрос, как сделать так чтобы юзер кликнув по папке и нажав "открыть" передал путь папки и завершил файл диалог???
Это очень важно для меня, если кто нить имеет идеи по этому поводу пожалуйсто поделитесь!
Зараннее спасибо.

З.Ы. мне кажеться, что решение простое, но просто я чего-то не знаю :((((



--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
thomas
Дата 18.11.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Мурлыкатам_
Приветствую
Цитата

мне кажеться, что решение простое, но просто я чего-то не знаю

Ты не поверишь, действительно есть простое решение.  smile 
И знаешь как оно называется?  smile 
FolderBrowserDialog, во как.
И находиться эта фича на две строчки выше OpenFileDialog  в ToolBox студии в разделе Dialogs.
Успехов.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Мурлыкатам_
Дата 19.11.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

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



Приветствую, thomas,  
у меня следующая задача - передавать файл, файлы или все файлы из папки на удаленную машину.
Как красиво организовать диалог выбора файлов для передачи?
Потомучто FolderBrowserDialog - какой-то непонятный (наверное потому что нету св-ва FileNames  smile ).
Или плз мелкий пример обработки файлов через этот контрол.  smile 


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
1stain
Дата 19.11.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



или OpenFileDialog с Multiselect = true, или делай свой контрол на манер проводника


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
thomas
Дата 19.11.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Мурлыкатам_
Приветствую.
Вопрос стоял как передать путь к папке.
Цитата

как сделать так чтобы юзер кликнув по папке и нажав "открыть" передал путь папки и завершил файл диалог???

Я предложил соответствующий контрол, который выбирает папки.
Ежели нужен файл, то для этого используется другой контрол, который и был использован. Но он указывает путь к файлу.
И отвечает этому вопросу
Цитата

Как красиво организовать диалог выбора файлов для передачи?

Если из того что выдает OpenFileDialog нужно получить имя файла и путь к нему отдельно, то используем методы класса String и парсим строку.
Что-то типа этого
Код

dlgOpenFile.InitialDirectory = Application.StartupPath & "\foto"
dlgOpenFile.ShowDialog()
Dim pad As String = dlgOpenFile.FileName 'получил ПОЛНОЕ имя выбранного файла
Me.LG_fotoPictureBox.Image = Image.FromFile(pad)
Dim ind As Integer = InStrRev(pad, "\foto") 'нашёл позицию последнего бекслеша
Me.LG_fotopathTextBox.Text = pad.Substring(ind - 1) 'типа отобразил путь к файлу в текстбоксе

Описание функции а Object Browser-е студии.
Цитата

Public Function InStrRev(ByVal StringCheck As String, ByVal StringMatch As String, Optional ByVal Start As Integer = -1, Optional ByVal Compare As Microsoft.VisualBasic.CompareMethod = Binary) As Integer
     Member of: Microsoft.VisualBasic.Strings
Summary:
Returns the position of the first occurrence of one string within another, starting from the right side of the string.

Parameters:
Start: Optional. Numeric expression setting the one-based starting position for each search, starting from the left side of the string. If Start is omitted then –1 is used, meaning the search begins at the last character position. Search then proceeds from right to left.
StringMatch: Required. String expression being searched for.
Compare: Optional. Numeric value indicating the kind of comparison to use when evaluating substrings. If omitted, a binary comparison is performed. See Settings for values.
StringCheck: Required. String expression being searched.

Return Values:
If StringCheck is zero-length, InStrRev returns 0. If StringMatch is zero-length, InStrRev returns Start. If StringMatch is not found, InStrRev returns 0. If StringMatch is found within StringCheck, InStrRev returns position at which the first match is found, starting with the right side of the string. If Start is greater than length of StringMatch, InStrRev returns 0.

 



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
1stain
Дата 19.11.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



для работы с путями есть статический класс System.IO.Path
Код

    string filePath = @"C:\XXX\YYY\ZZZ\test.txt";
        string directoryPath = Path.GetDirectoryName(filePath);



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
Domovik
Дата 22.11.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А вообще, в данном случае, очень удобен будет класс FileInfo. Тут тебе и вся информация о файле (включая те же пути) и возможность получения файлового потока на этот файл, и многое, многое другое smile. Единственный минус, что нельзя задать  права дочтупа при получение FileStream для других программ, по-умолчанию, вроде бы, они устанавливаются в "только для чтения".


Это сообщение отредактировал(а) Domovik - 22.11.2007, 10:31
PM MAIL   Вверх
Мурлыкатам_
Дата 22.11.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

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



У мя есть приложение которое все это уже делает openFileDialog-om, возник вопрос, что если в диалоге кликнуть на папку, то откроется ее содержимое, а можно в файл диалоге перекрыть чего нить чтобы при клике на "открыть" при выделенной папке - передавался путь этой папки. А файлы и так открываются, и мультиселектом и по одному... Мне нуна еще и папку как-то обработать.
Есть мысли?
Domovik, ты это все к чему?


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
1stain
Дата 22.11.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

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



не устраивают стандартные средства? Тебя же никто за руки-ноги не держит - разрабатывай юзерконтролы...
сделай что-то наподобии проводника - сплит: слева- директории, справа - файлы. И выбирай что хочешь


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
Мурлыкатам_
Дата 22.11.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

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



Я не умею делать свои контролы.  smile 


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
Experimenter
Дата 22.11.2007, 19:53 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мурлыкатам_1stain, не надо юзерконтролов, вполне для этих целей подойдет ListView, классный штук.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
thomas
Дата 22.11.2007, 21:35 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Мурлыкатам_
Приветствую.
В который раз перечитываю эту тему. И все ни как понять не могу. Если тебе надо передавать файл(ы) и программа это делает, зачем тебе еще и папку обрабатывать?
И что ты понимаешь под этим выражением?
Цитата

Мне нуна еще и папку как-то обработать.

Если тебе для чего то нужно отделить мух от котлет, т.е. из полного имени файла, которое тебе выдает OpenFileDialog, выделить путь и имя папки, в которой лежит этот файл, то
я тебе уже писал
Цитата

используем методы класса String и парсим строку.


И пойми OpenFileDialog не предназначен для выдачи пути к папке, он предназначен для выбора файлов и возвращает полный путь к файлу.
И пока ты не выбрал в нем файл (ы) он не закроется.

Как вариант можно использовать комбинацию FolderBrowserDialog с OpenFileDialog
в первом выбираешь директорию и он тебе возвращает путь к ней в переменную
а второй открываешь в этой директории и выбираешь файл(ы)
Код

        DialogResult result = folderBrowserDialog1.ShowDialog();
        if( result == DialogResult.OK )
        {
            folderName = folderBrowserDialog1.SelectedPath;
            if(!fileOpened)
            {
                // No file is opened, bring up openFileDialog in selected path.
                openFileDialog1.InitialDirectory = folderName;
                openFileDialog1.ShowDialog();
                fileName = openFileDialog1.FileName;
            } 
        }
 



--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Мурлыкатам_
Дата 22.11.2007, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

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



Цитата

Как вариант можно использовать комбинацию FolderBrowserDialog с OpenFileDialog
в первом выбираешь директорию и он тебе возвращает путь к ней в переменную
а второй открываешь в этой директории и выбираешь файл(ы)


А мне нуна с точностью наоборот smile)))))  smile 

Эх... Понятно, спасибо за идеи.
Похоже все таки придеться в меню разделять выбор передать файлы или папку :(

Спасибо за помощь!!!

Это сообщение отредактировал(а) Мурлыкатам_ - 22.11.2007, 22:49


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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