1

PC内でプログラムファイルが配置されている場所をユーザーが選択し、アプリケーションが起動されるたびに、変更されるまでその場所を保存できるようにしたいと考えています。私はC#でこのようなことをしたことがありませんが、それでも自分はC#の初心者だと思っています。Settings.txtファイルまたはXMLファイルを作成し、ユーザーが保存した行を読み取ることを検討しましたが、これを保存する方法がわかりません。どんな助けや提案も大歓迎です。

4

4 に答える 4

0

最も簡単な方法は、おそらくこの目的で.NETユーザー設定を使用することです。

分離ストレージを含む、またはアプリケーションクラス(UserAppDataPath、LocalUserAppDataPath、UserAppDataRegistry、...)によって公開されるディレクトリまたはレジストリキーの1つを使用するなど、他にも多くのオプションがあります。

于 2012-10-04T21:07:59.613 に答える
0

特定のデータを保存するために独自のファイルタイプを作成することは、私には最初から問題ないように思えます。

プログラムを開発するとき、少し制限があることに気付くかもしれませんが、私が思いついた解決策から始めることを学ぶために、効率または実用性のためにどの部分を再設計する必要があるかをおそらく自分で特定します。

于 2012-10-04T20:57:26.840 に答える
0
void Main()
{
    // Settings in a Text File
    string path1 = @"C:\\Dev\\settings.txt";
    string setting1;
    string setting2;
    setting1 = "foo";
    setting2 = "bar";
    SaveSettingsToTextFile(path1, setting1, setting2);
    setting1 = "";
    setting2 = "";
    LoadSettingsFromTextFile(path1, out setting1, out setting2);
    Console.WriteLine(setting1);
    Console.WriteLine(setting2);

    // Settings in an Xml File
    string path2 = @"C:\\Dev\\settings.xml";
    MySettings mySettings = MySettings.Create(path2);
    mySettings.setting1 = "bat";
    mySettings.setting2 = "baz";
    mySettings.Save();  
    mySettings = null;
    mySettings = MySettings.Create(path2);
    Console.WriteLine(mySettings.setting1);
    Console.WriteLine(mySettings.setting2);
}

void SaveSettingsToTextFile(string path, string setting1, string setting2)
{
    var sb = new StringBuilder();
    sb.AppendLine(setting1);
    sb.AppendLine(setting2);
    File.WriteAllText(path, sb.ToString());
}

void LoadSettingsFromTextFile(string path, out string setting1, out string setting2)
{
    var lines = File.ReadLines(path).ToArray();
    setting1 = lines[0];
    setting2 = lines[1];
}

public class MySettings
{
    public string setting1 { get; set; }
    public string setting2 { get; set; }

    static XmlSerializer serializer = new XmlSerializer(typeof(MySettings));

    public static MySettings Create(string savePath)
    {
        MySettings instance;
        if(File.Exists(savePath))
        {
            var xDoc = XDocument.Load(savePath);
            var reader = xDoc.CreateReader();
            instance = (MySettings)serializer.Deserialize(reader);
            reader.Close();
        }
        else
        {
            instance = new MySettings();
        }
        instance.SavePath = savePath;
        return instance;
    }

    public void Save()
    {
        var xDoc = new XDocument();
        var writer = xDoc.CreateWriter();
        serializer.Serialize(writer, this);
        writer.Close();
        File.WriteAllText(this.SavePath, xDoc.ToString());
    }

    [XmlIgnore]
    public string SavePath { get; private set; }
}

出力:

foo
bar
bat
baz
于 2012-10-04T21:56:21.317 に答える
0

最も簡単な方法は、設定テキストファイルまたはxmlファイルをプロジェクトに追加し、C#コードビハインドで更新することです。非常に簡単なので、ここではその方法について詳しく説明しません。Googleでc#のテキストファイルへの書き込みを検索するだけです。

于 2012-10-04T22:02:24.247 に答える