На этом уроке мы будем работать с буфером обмена и открывать сайты в браузере по умолчанию.
Задание: Создать программу для хранения паролей.
Дата отправки отчёта:
28 января 2023 г.
Задание выполнено: за
1 день 1 час. 42 мин.
Чему научился:
Было весело. Повторять за всеми не буду. Напишу только какие проблемы могут быть у тех, кто начал этот курс на Net версии 6 и выше. У меня стоит Net7 ну и 11 окна. :) По видео уроку указал время в первом вопросе... 1. 19:58 переименование проекта на последней Visual22 ver. 17.14, приводит к краху проекта. После этого восстановить его не получилось... Три раза пробовал на разных этапах, начиная с самого начала и сразу после создания формы. В этом случае все переименовывается, но после компиляции происходит пустой старт формы с name Form1 и дальнейшие манипуляции с элементами формы и ей самой сохраняются, но не отображаются на откомпилированной форме. Не когда искать причину этого бага или того, что еще надо сделать в проекте, чтобы все работало нормально. 2. Просто так, в версии NET6 и выше, как я понял Process.Start не запускает связанное с файлом приложение и код в ролике: Process.Start("www.google.ru"); приведет к ошибке: System.ComponentModel.Win32Exception: 'An error occurred trying to start process 'www.google.ru'; with working directory 'C:\Users\Debugger\Documents\PassWord\PassWord\bin\Debug\net7.0-windows'. Не удается найти указанный файл. Так, как существуют некоторые отличия класса Process от .NET Framework. Process.Start позволяет запускать приложение напрямую, например, с помощью такого кода, как Process.Start("mspaint.exe"), который запускает Paint. Это также позволяет косвенно запускать связанное приложение, если для параметра ProcessStartInfo.UseShellExecute задано значение true. В .NET Framework значение по умолчанию для ProcessStartInfo.UseShellExecute равно true, это означает, что такой код, как Process.Start("mytextfile.txt"), запустит Блокнот, если вы связали файлы .txt с этим редактором. Чтобы предотвратить непрямой запуск приложения в .NET Framework, необходимо явно задать для ProcessStartInfo.UseShellExecute значение false. В .NET Core значение по умолчанию для ProcessStartInfo.UseShellExecute — false. Это значит, что , по умолчанию связанные приложения не запускаются при вызове Process.Start. Поэтому начиная с версии Net 6 надо UseShellExecute = true выставлять программно через создание нового объекта new ProcessStartInfo. В итоге получаем такую конструкцию: a) c прямой ссылкой 'Process.Start(new ProcessStartInfo{ FileName = "www.google.ru", UseShellExecute = true }); б) Через атрибут Tag Process.Start(new ProcessStartInfo { FileName = ((string)llSyte1.Tag), UseShellExecute = true }); - соответственно.
Что было сложным:
Было не сложно, ибо гугл все знает, но над проектами сижу наскоками, в свободное время. Иногда приходится отвлекаться, а таймер тикает. :)
Научился: Отличный урок.
Научился открывать ссылки в браузере, копировать текст в буфер, выделять текст...
Сделал как в видео уроке, но решил доработать.
Захотел сделать не 3 строки в tableLayoutPanel, как в видео примере, а поле с выпадающим списком....Так же, чтобы поля логин и пароль были в единичном экземпляре и менялись в зависимости от выбора поля списка...Ну и до кучи, чтобы можно было прямо из формы дописывать новые значения в список...
1) Решил воспользоваться элементом ComboBox (заодно и разобраться как он работает). Добавил его вместо Label Link. Поле "логин" оставил как в видео примере. Поле пароль сделал звездочками TextBox (так больше нравится, чем кнопка)
2) Далее занялся вопросом наполнения списка. Оказалось не все так просто, как я думал))) Добавил в него предопределнные значения и понял, что мне это ничего не дает...Ведь в нем получится хранить имя сайт...А где тогда будут логин и пароль? Отложил вопрос и решил для начала добавить программно список сайтов.
3) На форме сделал несколько полей (название сайта, логин, пароль и кнопку “добавить”). Пометил их так же в tableLayoutPanel. Сделал CheckBox, решив от его состояния показывать поля добавления или нет... Пришлось поковыряться с привязками, чтобы отображение было нормальным. Так же долго возился с центрированием формы (если есть доп. меню или оно скрывается). В итоге погуглил и как результат смог написать функцию, которая определяет центральное положение формы с учетом изменения ее размеров в зависимости от того показано ли доп. меню или нет.
4) Когда все было готово и добавление в список наладилось, я заметил что, закрыв программу, список открывался пустой...Погуглив понял, что необходимо хранить данные в файле.. Сделал текстовый файл в папке с проектом. Написал функцию записи в файл при нажатии кнопки “добавить”. А при загрузке формы функцию которая считывает данный файл, парсит строки и наполняет список...
В общем проделал для себя огромную работу по прокачиванию навыков..Почти все вышеописанное делал впервые...Было очень интересно.
Затянул меня С# )))
Трудности: Искать в слепую методы и варианты решения поставленных перед собой задач.