Можно ли программно изменить значок notifyIcon? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть приложение WinForms, в котором есть небольшая программа установки, которая записывает в Properties.Settings. Пользователь должен выбрать значок notifyIcon на своем жестком диске. Я не могу просто изменить его с помощью

notifyIcon1.Icon = Properties.Settings.Default.userIcon;

, потому что он выдает сообщение «Невозможно преобразовать из строки в System.Drawing.Icon». Может ли кто-нибудь исправить меня?
Заранее спасибо.

1 Ответ

0 голосов
/ 26 мая 2020

«Пользователь должен выбрать значок notifyIcon со своего жесткого диска».

Значок где-то в имени файла? Если пользователь выбирает значок в жестком драйвере, действительно ли он выбирает файл, содержащий значок?

В этом случае вы должны определить Properties.Settings.Default.UserIcon как строку и сохранить имя имени файла. Дайте вашему окну свойство, которое получает и устанавливает UserIcon.

private string UserIconFileName
{
    get => Properties.Settings.Default.UserIcon;
    set => properties.Settings.Default.UserIcon = value;
}

private Icon LoadUserIcon
{
    string userIconFileName = this.UserIconFileName
    if (!File.Exists(userIconFileName))
    {
        // TODO: decide what to do if there is no such file
    }
    else
    {
        return new Icon(userIconFileName);
    }
}

Не забудьте сохранить свои свойства при закрытии программы:

private void OnFormClosed(object sender, FormClosedEventArgs e)
{
    Properties.Settings.Default.Save();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...