Member 12931315 Ответов: 1

Как передать имя пути в строковую переменную ex: sfilename содержит путь с именем файла


Диалоговое окно openfiledialog choofdlog = новое диалоговое окно openfiledialog();
чуф-лог.Filter = " все файлы (*. DAT)|*. DAT";
чуф-лог.FilterIndex = 1;
чуф-лог.Множественный = истина;
строка sFileName;

если (choofdog.ShowDialog () = = DialogResult.ОК)
{
sFileName = choofdlog.имя файла;

}
FileStream fs = новый FileStream(sFileName, FileMode.Открытия, Флагами Fileaccess.Читать);

это даст ошибку, если я поставлю sFileName вот так, вот так "sFileName"
он передает текущее имя папки

Пожалуйста, помогите мне

Заранее спасибо


Аджит

Что я уже пробовал:

это даст ошибку, если я поставлю sFileName вот так, вот так "sFileName"
он передает текущее имя папки

[no name]

Из 3453463576456756 ошибок, которые вы можете получить, как мы узнаем, какую из них вы выбрали?

Зачем передавать пустую строку конструктору FileStream, если пользователь нажимает кнопку "Отмена"?

Richard MacCutchan

Конечно, это дает ошибку. sFileName это переменная, а не имя файла. Кроме того, почему вы сидите Multiselect = true когда вы просто хотите открыть один файл?

1 Ответов

Рейтинг:
7

OriginalGriff

Попробовать это:

OpenFileDialog choofdlog = new OpenFileDialog();
choofdlog.Filter = "All Files (*.DAT)|*.DAT";
choofdlog.FilterIndex = 1;
choofdlog.Multiselect = true;
    if (choofdlog.ShowDialog() == DialogResult.OK)
    {
    foreach (string sFileName = choofdlog.FileNames)
        {
        using (FileStream fs = new FileStream(sFileName, FileMode.Open, FileAccess.Read))
        {
            {
               ...
            }
        }
    }
Когда вы используете multiselect, вы должны работать с коллекцией имен файлов, а не с одним именем файла - и вы не должны пытаться открыть файлы, если пользователь нажмет "отмена" в диалоговом окне.


Member 12931315

Привет OriginalGriff1

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

Дело в том, что я совершенно новый C#, и их будет еще много
кое-какая глупая проблема от меня.

Спасибо снова

Аджит (из Шри-Ланки )

OriginalGriff

Пожалуйста!

Member 12931315

Привет Грифф

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

cToken1 = str.ToString (). Substring(0, 9). Trim();
cToken2 = '5' + cToken1.PadLeft(5, '0');
cToken = cToken2. Substring(0, 6);
cDate = str.ToString (). Substring(10, 10);
cTime = str.ToString (). Substring(21, 2) + str.ToString (). Substring(24, 2);
cIdno = str.ToString (). Substring(30, 1);
datetime = конвертировать.Объект todatetime(с дата);

DataRow [] foundrow;
foundRows = это.timeattDataSet.табличные данные"].Выберите ("Token_no= @cToken and Date = @datetime and Time = @cTime");

это дает ошибку для @cToken, это говорит о том, что это столбец, а не переменная

Не могли бы вы помочь

Заранее спасибо

Аджит

OriginalGriff

Совсем другая тема, должен быть новый вопрос QA!