Составляем программу - менеджер фоновых рисунков для рабочего стола.
Дата отправки отчёта:
21 февраля 2019 г.
Задание выполнено: за
1 день 1 час. 27 мин.
Чему научился:
Отличный урок. Узнал о реализации загрузки по URL, так же про работу user System.IO более подробно. На вид простенькая задача, при реализации подкинула своих проблем))) Думал что сделаю быстрее, но по мелочи с различными ошибками пришлось разбираться несколько вечеров что к чему. Ну спешить некуда. Опыт копиться по крупицам, главное не оставлять невыясненных моментов, когда переходишь к другим вопросам от текущего.
Что было сложным:
В моем случае, после выбора из списка listPictures файлов каталога \\papers не устанавливалась картинка на рабочий стол. Проанализировал при этом значение в реестре файла - WallPaper. Оно было каким то укороченным.... На рабочем столе при этом становился черный экран (по такому пути не находилось картинки для установки фона). В уроке у Евгения отличий в коде не нашел... Но при этом у меня не хотело работать... В общем решил искать не соответствие кода и видео а решение проблемы))) Выяснил, что при установке фонового рисунка руками с( помощью контекстного меню Windows) в том же каталоге \\pictures - в WallPaper путь указывается как полный С:\... Пришел к выводу, что нужно попробовать получать полное имя файла из переменной path которую используем для установки. (Использовал для этого метод - Path.GetFullPath(path); ). После того как начал передавать полное имя в SystemParametersInfo...Стало отрабатывать как нужно.
Научился: Взаимодействию с Windows API. Трудности: Подружиться с Windows API.
Да, и почему то в редакторе реестра, в том параметре, где указывается путь к скриншоту, у меня написан короткий путь к файлу, а не полный. Поэтому у меня вместо фона устанавливался черный фон. Пришлось немного пошаманить с переменной dir, чтобы в этот параметр заносился полный путь. Я добился своего, но обратной стороной медали стало то, что теперь в перечне скриншотов в самой программе я не могу избавиться от косой черты в именах файлов. Но основную задачу я при этом выполнил - файлы успешно скачиваются по ссылке и устанавливаются в виде фона.
Если будет время и настраение - буду думать как избавиться от косой черты.
Спасибо за интересный, хоть и сложный урок.
Научился: Управлять обоями рабочего стола, управлять файлами, создавать папки. Трудности: Вывести обои рабочего стола (потребовалось указать полный путь) 1) При попытке установить фоновый рисунок экран закрашивался в черный цвет. В реестре путь выглядел как paper/file.jpg. Пришлось прописать полный путь следующим образом:
string dir = Environment.CurrentDirectory + "\\paper\\";
Может, конечно, в уроке это место просмотрела.
2) Я не стала удалять PictureBox, а просто освободила ресурсы перед удалением файла, и все получилось:
private void list_picture_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Delete)
{
if (list_picture.SelectedIndex < 0) return;
try
{
picture.Image.Dispose(); // вот эта строка высвобождает ресурсы
picture.Image = null;
File.Delete(dir + list_picture.SelectedItem.ToString());
ReloadPictures();
}
catch
{ }
}
}