Составляем программу - менеджер фоновых рисунков для рабочего стола.
Дата отправки отчёта:
18 декабря 2018 г.
Задание выполнено: за
21 час. 52 мин.
Чему научился:
Хорошее приложение. Большой навык практической работы от элементов формы до работы с реестром. Внимание! Проблему с удалением файлов (pictureBox.Image = Image.FromFile(dir+name) -было так) решил таким кодом:
using (FileStream fs = new FileStream(dir + name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { pictureBox.Image = Image.FromStream(fs); } т.е. читаем не прямым доступом а потоком. Видимо потоки правильно закрываются и освобождают файлы для дальнейшей работы
Что было сложным:
накосячил с директорией картинок никак не мог понять почему она у меня не заводится оказалось все банально просто - невнимательность - в условии создания забыл ! поставить
да с удалением картинки кто бы мог догадаться - интрига
Ждем продолжения урока - как поставить видео вместо обоев на рабочий стол - например фоном аквариум с рыбками.
Молодец, хорошо проработал и решил проблему с удалением сам. Using используется как раз для таких случаев, так как он более компактный и при завершении задачи, он высвобождает используемые ресурсы и файлы. Вместо этого можно было использовать .Close() и .Dispose(), но Using более красиво выглядит и точно ничего нигде не забудешь.
Отчёт оценивали: 20563. Никита010558. Иван Воронин+110494. Алексей В.+1Посетитель+118626. superGrover+1791. Валерий Жданов+110100. Александр Заскотченко+110895. Danil42Russia+111019. Trira+117947. Dmitry Sinitsin+117606. Виктор+11. Евгений Волосатов+13922. Александр+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Взаимодействию с 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
{ }
}
}