Я пытаюсь настроить свою форму для загрузки BackgroundImageпо пути, указанному в файле .txt.

Содержимое текстового файла выглядит так:

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Background.png")

Когда форма загружается, я запускаю этот код:

//LOAD FORM

     string BackgroundSkinsPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Skin.cfg");
     this.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));

Содержимое этого текстового файла может быть изменено пользователем, нажав кнопку, относящуюся к другому фоновому изображению:

//CHANGE BG IMAGE

    private void ChangeBGButton_Click(object sender, EventArgs e)
    {  
     string BackgroundSkinsPath = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Skin.cfg");
     System.IO.File.WriteAllText(BackgroundSkinsPath, "System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Background2.png")");
     this.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));
    }

Причина, по которой я хочу записать расположение фонового изображения в файл, состоит в том, чтобы в следующий раз, когда пользователь загрузит приложение, у него будет фоновое изображение, которое они выбрали, и это единственный способ, который я могу придумать для этого.

The problem is, the code I've written doesn't work, and I'm not sure how to fix it.

Я хочу, чтобы пользователь мог выбрать фоновое изображение для приложения из папки в своей папке «Мои документы» (с помощью кнопки или аналогичного средства), и чтобы приложение запомнило, какое изображение они выбрали при следующем запуске. приложение.

Patrick

Ответы (1)

Вы пишете выражение C # в вашем файле cfg, а не буквальную строку с эффективным путем фонового изображения.

using System.IO;

private void ChangeBGButton_Click(object sender, EventArgs e)
{  
    string BackgroundSkinsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Skin.cfg");
    string currentBackgroundImage = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Background2.png");
    File.WriteAllText(BackgroundSkinsPath, currentBackgroundImage );
    this.BackgroundImage = Image.FromFile(File.ReadAllText(currentBackgroundImage));
}

Теперь в методе ЗАГРУЗКИ вы можете использовать

string BackgroundSkinsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDoc‌​uments), "Application Name", "Skins", "Skin.cfg");
this.BackgroundImage = Image.FromFile(File.ReadAllText(BackgroundSkinsPath));

2022 WebDevInsider