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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FolderBrowserDialog и OpenFileDialog 
:(
    Опции темы
DenWPF
Дата 26.11.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



private FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
        private OpenFileDialog openFileDialog1 = new OpenFileDialog();



private void InitializeComponent()
        {
openFileDialog1.DefaultExt = "jpg";
            openFileDialog1.Filter = "jpg files (*.jpg)|*.jpg";
            folderBrowserDialog1.Description =
            "Select the directory that you want to use as the default.";
            folderBrowserDialog1.ShowNewFolderButton = false;
            folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;
            DialogResult result = folderBrowserDialog1.ShowDialog();
            

            if (result == DialogResult.OK)
            {
             
                //directoryName = folderBrowserDialog1.SelectedPath;
            }
}


открывается окно Select the directory that you want to use as the default. - видно кнопки ок и кансел есть.

а самих папок не видно
PM MAIL   Вверх
explorer
Дата 26.11.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

 folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop; 

Прямо указывает, что просмотр начинается с рабочего стола. Не на всяком столе есть папки ;) Думаю, смена рутовой папки на что-то более адекватное поможет увидеть все, что нужно.

И чем не нравится запись 
Код

 if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
 {
...
 }
 
Зачем огороды городить с переменными, которые используются только в одном месте?

Это сообщение отредактировал(а) explorer - 26.11.2009, 14:34
--------------------
 
PM MAIL WWW ICQ   Вверх
DenWPF
Дата 26.11.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



не помогло.
PM MAIL   Вверх
explorer
Дата 26.11.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ага, ну теперь понятно, что ты делаешь smile Смотри, у тебя там смешаны два вида диалогов, для папок и для файлов. Судя по всему, кончечная твоя цель все же некая картинка, т.е. файл. Ну так зачем же тебе тогда диалог открытия папки?? Используй сразу диалог для файлов (он тоже отображает папки).

Код

    OpenFileDialog openFileDialog1 = new OpenFileDialog();

    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "jpg files (*.jpg)|*.jpg" ;
    openFileDialog1.RestoreDirectory = true ;

    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    { 
      ... 
    }

--------------------
 
PM MAIL WWW ICQ   Вверх
DenWPF
Дата 26.11.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



нет, имено папок надо=)
а то что я с тэим путаюсь я уже понял(((((
PM MAIL   Вверх
explorer
Дата 27.11.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Самый простой вариант, у меня такой  работает:

Объявляем:
Код

private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;

folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
folderBrowserDialog.RootFolder = System.Environment.SpecialFolder.MyComputer;
folderBrowserDialog.ShowNewFolderButton = false;


Вызываем:
Код

folderBrowserDialog.Description = "My description";
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
        MessageBox.Show(folderBrowserDialog.SelectedPath);
}

--------------------
 
PM MAIL WWW ICQ   Вверх
DenWPF
Дата 27.11.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



а у меня так же и не получается.
PM MAIL   Вверх
Экскалупатор
Дата 27.11.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

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



DenWPF, а у тебя Explorer работает вообще? а то у меня была похожая ситуация. включаешь тотал все работает а в експлорер при этом даже не включался, ну и в проге что тогда писал папки тоже не отображались...
PM MAIL ICQ   Вверх
DenWPF
Дата 27.11.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



эм, работает. и в другом проекте все норм работает.
приду домой скину проект.
PM MAIL   Вверх
DenWPF
Дата 28.11.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



Код

        private static System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;

        static void Main() 
        {
            folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
            folderBrowserDialog.RootFolder = System.Environment.SpecialFolder.MyComputer;
            folderBrowserDialog.ShowNewFolderButton = false;
            Console.WriteLine("Starting screensaver");

            string[] cmdList = Environment.CommandLine.Split(' ');

            // First command-line param is the exe name, second param is the mode

            if (cmdList.Length >= 2)
            {
                cmdList[1] = "/c";
                if (cmdList[1].IndexOf("/c") >= 0)  // Configuration mode
                {
                    folderBrowserDialog.Description = "My description";
                    if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
                    {
                        MessageBox.Show(folderBrowserDialog.SelectedPath);
                    }
                    //Application.Run(new OptionsForm());
                    return; 
                }

                parentHwnd = IntPtr.Zero;
                
                if (cmdList[1] == "/p")    // Preview mode
                {
                    previewMode = true;

                    // Handle to preview dialog box is next command-line param
                    parentHwnd = (IntPtr) uint.Parse(cmdList[2]);
                }

                // -s parameter means to run in full-screen mode
            }
            Application.Run(new ScreenSaverForm());
        }

не работает=(
PM MAIL   Вверх
DenWPF
Дата 29.11.2009, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



folderBrowserDialog.RootFolder = System.Environment.SpecialFolder ;  =может это при каких то ситуациях не работает.
что он должен запсывать в RootFolder ? я в дебаге проверю.

Добавлено через 2 минуты и 6 секунд
при дебаге мне выдается сообщение 
Текущий поток должен быть задан как поток однопоточного контейнера (STA), чтобы вызовы OLE стали возможны. Проверьте, что ваша функция Main помечена атрибутом STAThreadAttribute. Данное исключение создается, только если к процессу подключен отладчик.

это  на if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
PM MAIL   Вверх
DenWPF
Дата 29.11.2009, 11:56 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

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



ха-ха, как не смешно...но блин...проведя самогипноз smile , я нашел эту дурацкую ошибку smile .

 [STAThread] 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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