Войти

Показать полную графическую версию : [решено] Ошибка при использовании диалоговых окон


giv5dot26
16-02-2011, 11:49
Здравствуйте. В моей программе присутствует функция открытия файла через диалоговое окно. Пробую запускать программу в XP и ниже не работает, вываливается необрабатываемое исключение (обработку исключений я еще не реализовывал). А в чем собственно подвох? Visual Studio 2008. C#

Delirium
16-02-2011, 14:20
(обработку исключений я еще не реализовывал). »
а что там реализовывать?
try
{
твой код по открытию
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
И выдаст сообщение, в чем дело.

giv5dot26
17-02-2011, 07:14
Сделал, не выдает. выскакивает тоже окошко времени выполнения и все.

Delirium
17-02-2011, 08:23
Ну тогда код в студию.

giv5dot26
17-02-2011, 08:39
try
{
DlgOpenFile.ShowDialog();
y = DlgOpenFile.FileNames.Count() - 1;
}
catch (PlatformNotSupportedException ex)
{
MessageBox.Show(ex.Message);
return;
}
if (!FileOpened)
return;
if (y >= 18)
{
MessageBox.Show("Нужно выбрать не более 18 файлов!");
FileOpened = false;
return;
}
for (x = 0; x <= y; x++)
{
Foo(DlgOpenFile.FileNames[x]);
}

Beyound
17-02-2011, 17:59
PlatformNotSupportedException ex - а зачем ты используешь этот класс ошибки - не лучше ли использовать класс-родитель Exeption как тебе советовали.

Delirium
18-02-2011, 01:00
giv5dot26, для отладки приложений всегда лучше использовать класс-родитель Exception - в таком случае ты 100%-но получишь код и описание ошибки. После получения ошибки и класса потомка-Exception уже можно будет раскидывать catch по разным исключениям. А PlatformNotSupportedException ты получишь в крайне редких случаях.

giv5dot26
18-02-2011, 04:00
Проверив на нескольких машинах понял что это из-за отсутствия .Net framework 3.5, а я как то даже и не подумал про него. Подскажите какое исключение используется в подобных случаях?

Delirium
18-02-2011, 06:19
giv5dot26, а для чего используется Net framework 3.5 в приложении? Просто потому, что студия так предложила? В большинстве приложений достаточно использовать Net framework 2.0.
Net framework 3.5 достаточно объемен и его использование в ряде случаев является необязательным. В частности, приведенный тобою код будет нормально работать и на версии 2.0, который автоматом включен в Windows 7(в XP нет).
Подскажите какое исключение используется в подобных случаях »
В данном случае нет исключения, необходимо просто проверять версию установленного Net framework. Делается это во время создания инсталлятора.

Попробуй выставить в свойствах проекта Net framework 2.0 и перекомпилировать приложение.

giv5dot26
18-02-2011, 06:22
Попробую, но раз на XP нет все равно будут проблемы.

Delirium
18-02-2011, 10:55
giv5dot26, фреймворк 2 весит 20Мб, а 3.5 - уже за 300. Что проще и быстрее поставить? :)
А если уж пишешь под .Net, привыкай, что требование в виде фреймворка будут обязательны :)

giv5dot26
18-02-2011, 11:23
Воистину.




© OSzone.net 2001-2012