Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Ошибка при использовании диалоговых окон (http://forum.oszone.net/showthread.php?t=199623)

giv5dot26 16-02-2011 11:49 1614236

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

Delirium 16-02-2011 14:20 1614378

Цитата:

Цитата giv5dot26
(обработку исключений я еще не реализовывал). »

а что там реализовывать?
Код:

try
{
твой код по открытию
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

И выдаст сообщение, в чем дело.

giv5dot26 17-02-2011 07:14 1615013

Сделал, не выдает. выскакивает тоже окошко времени выполнения и все.

Delirium 17-02-2011 08:23 1615044

Ну тогда код в студию.

giv5dot26 17-02-2011 08:39 1615053

Код:

 
            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 1615526

PlatformNotSupportedException ex - а зачем ты используешь этот класс ошибки - не лучше ли использовать класс-родитель Exeption как тебе советовали.

Delirium 18-02-2011 01:00 1615794

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

giv5dot26 18-02-2011 04:00 1615833

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

Delirium 18-02-2011 06:19 1615842

giv5dot26, а для чего используется Net framework 3.5 в приложении? Просто потому, что студия так предложила? В большинстве приложений достаточно использовать Net framework 2.0.
Net framework 3.5 достаточно объемен и его использование в ряде случаев является необязательным. В частности, приведенный тобою код будет нормально работать и на версии 2.0, который автоматом включен в Windows 7(в XP нет).
Цитата:

Цитата giv5dot26
Подскажите какое исключение используется в подобных случаях »

В данном случае нет исключения, необходимо просто проверять версию установленного Net framework. Делается это во время создания инсталлятора.

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

giv5dot26 18-02-2011 06:22 1615843

Попробую, но раз на XP нет все равно будут проблемы.

Delirium 18-02-2011 10:55 1615985

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

giv5dot26 18-02-2011 11:23 1616006

Воистину.


Время: 09:36.

Время: 09:36.
© OSzone.net 2001-