как запомнить последний путь при вставке файлов в список - PullRequest
0 голосов
/ 22 марта 2012

У меня есть приложение со списком и файлами, каждый раз, когда я нажимаю кнопку «Добавить», открывается диск C по умолчанию, и я хочу, чтобы приложение запоминало последний использованный мной путь.

private void btnAdd_Click(object sender, EventArgs e)
{
    System.IO.Stream myStream;
    OpenFileDialog thisDialog = new OpenFileDialog();
    thisDialog.InitialDirectory = "c:\\";
    thisDialog.Filter = "(*.snoop, *.pcap, *.cap, *.net)|*.snoop; *.pcap; *.cap; *.net|" + "All files (*.*)|*.*";
    thisDialog.FilterIndex = 1;
    thisDialog.RestoreDirectory = false;
    thisDialog.Multiselect = true; // Allow the user to select multiple files
    thisDialog.Title = "Please Select Source File";
    thisDialog.FileName = lastPath;
    List<string> list = new List<string>();

    if (thisDialog.ShowDialog() == DialogResult.OK)
    {
        foreach (String file in thisDialog.FileNames)
        {
            try
            {
                if ((myStream = thisDialog.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        listBoxFiles.Items.Add(file);
                    }
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
            }
        }

    }
}

Ответы [ 5 ]

2 голосов
/ 22 марта 2012

Вы можете использовать Visual Studio с последним значением пути для каждого выполнения приложения.

Необходимо только перейти в Свойства проекта-> Конфигурация и добавить дескриптор значения.

Пример:

Name = LastPath;Тип = строка;Scope = Пользователь;Значение = "Путь по умолчанию";

И затем, после перестройки приложения, вы можете установить это свойство следующим образом:

Settings.Default.LastPath = LastPathSelected;

позже, вы можете получить значение с помощью:

thisDialog.InitialDirectory = Settings.Default.LastPath;
2 голосов
/ 22 марта 2012

Сохранить последний каталог, использованный в глобальной переменной, например:

private string _lastPath = string.Empty;

затем после выбора файла инициализируйте его:

if(thisDialog.Filenames.Length > 0)
    _lastPath = Path.GetDirectoryName(thisDialog.Filenames[0]);

при повторном открытии диалогового окна установите InitialDirectory с этой проверкой:

thisDialog.InitialDirectory = (_lastPath.Length > 0 ? _lastPath: "c:\\"); 

и удалите thisDialog.FileName = lastPath;

РЕДАКТИРОВАТЬ --- ОБНОВЛЕНИЕ ВАШЕГО КОДА ---

// This at the global level of your form 
private string _lastPath = string.Empty;**

private void btnAdd_Click(object sender, EventArgs e) 
{ 
    System.IO.Stream myStream; 
    OpenFileDialog thisDialog = new OpenFileDialog(); 
    thisDialog.InitialDirectory = (_lastPath.Length > 0 ? _lastPath: "c:\\");
    thisDialog.Filter = "(*.snoop, *.pcap, *.cap, *.net)|*.snoop; *.pcap; *.cap; *.net|" + "All files (*.*)|*.*"; 
    thisDialog.FilterIndex = 1; 
    thisDialog.RestoreDirectory = false; 
    thisDialog.Multiselect = true; // Allow the user to select multiple files 
    thisDialog.Title = "Please Select Source File"; 
    thisDialog.FileName = lastPath; 
    List<string> list = new List<string>(); 

    if (thisDialog.ShowDialog() == DialogResult.OK) 
    { 
        if(thisDialog.Filenames.Length > 0) 
            _lastPath = Path.GetDirectoryName(thisDialog.Filenames[0]);

        foreach (String file in thisDialog.FileNames) 
        { 
            try 
            { 
                if ((myStream = thisDialog.OpenFile()) != null) 
                { 
                    using (myStream) 
                    { 
                        listBoxFiles.Items.Add(file); 
                    } 
                } 
            } 

            catch (Exception ex) 
            { 
                MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); 
            } 
        } 

    } 
} 
1 голос
/ 22 марта 2012
thisDialog.InitialDirectory = Path.GetDirectoryName(lastPath);
0 голосов
/ 06 ноября 2013

удалите эту строку, и у вас будет последний путь

thisDialog.InitialDirectory = "c:\\";
0 голосов
/ 22 марта 2012

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

подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...