Paramu1973 Ответов: 3

Проблема диалогового окна openfiledialog с повторно нажмите кнопку


Привет,
Я использую VS2015 - Windows Forms. Когда я нажимаю кнопку обзора, OpenFileDialog работает хорошо. Но предположим, что как только я повторно нажму кнопку после обновления данных формы, OpenFileDialog просто повесит трубку.

Я не могу понять свою проблему.. Кто-нибудь из начальства может мне помочь?

мой код
MyFileNameStr = String.Empty;
openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "D:\\";
openFileDialog1.Filter = "(*.xlsx)|*.xls| All files (*.*)|*.*";
openFileDialog1.RestoreDirectory = true;
openFileDialog1.Title = "Select Your Attachment File :- ";
openFileDialog1.FileName = "";
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK && openFileDialog1.FileName.Length>0) {
    String MyDrawingFile = Path.GetFileName(openFileDialog1.FileName);
    myDataGrid1.CurrentRow.Cells["MyExcel_file"].Value = Path.GetFileName(openFileDialog1.FileName);
    MyFileNameStr = openFileDialog1.SafeFileName.ToString();
    MyFileNameStrs = openFileDialog1.SafeFileName.ToString().Split('_');
}


Еще Раз Спасибо

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

Попытался прочитать имя файла с помощью элемента управления OPenFileDailog.

3 Ответов

Рейтинг:
2

OriginalGriff

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

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Если вы не знаете, как его использовать, то быстрый Google для "Visual Studio debugger" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Рейтинг:
2

Paramu1973

Приведенный ниже код решает эту проблему...

openFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "D:\\";
openFileDialog1.Title = "Select Your Attachment File :- ";

openFileDialog1.CheckFileExists = true;
openFileDialog1.CheckPathExists = true;
openFileDialog1.Filter = "exe files | *.exe|All files (*.*)|*.*";

openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
openFileDialog1.ReadOnlyChecked = true;
openFileDialog1.ShowReadOnly = true;

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
MyDrawingFile = System.IO.Path.GetFileName(openFileDialog1.FileName).ToString();
MyFileNameStr = System.IO.Path.GetFileNameWithoutExtension(openFileDialog1.FileName).ToString();
}

Thanks


Рейтинг:
0

Dave Kreskowiak

Где вы определили "openFileDialog1" и где находится код, который распоряжается созданным вами экземпляром?

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