0

私はプログラミングがまったく初めてです。

3 つの TextBoxes と 1 つの最後の TextBlock を使用して、非常に単純なアプリを作成しようとしています。これら 3 つの TextBoxes からの入力をローカルに保存して、ページの下部にある TextBlock に 1 つの文字列で読み取って表示できるようにします。

スクリーンショット

StreamWriter クラスを使用する必要があることを読みました。どこから始めたらいいのかわからない...

これまでのところ、基本的に多くのコードはありません

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

        string name = tbxName.Text;
        string age = tbxAge.Text;
        string dinner = tbxDinner.Text;

        string[] answer = { name, age, dinner };

        StringWriter saveText = new StringWriter();
        StringReader readText = new StringReader(answer.ToString());
    }
}

各 TextBox の入力を保存し、ページの下部にある TextBlock の 1 つの文字列でその入力を読み取って表示するにはどうすればよいですか?

アプリを保存して、アプリを閉じて再度開いた後に入力を表示できるようにしたい。

申し訳ありませんが、これは非常に単純なことだと思います...

4

2 に答える 2

1

UWP の場合、ローカル フォルダーの ApplicationData にデータを保存します。StreamWriter でファイルストリームを書き込み、StreamReader で同じストリームから読み取ります。

ApplicationDataについてもっと読む

まず、UI から宣言する必要があるすべての変数をキャプチャするクラスを作成します。

public class Entity
{
    public string name { get; set; }
    public int age { get; set; }
    public string dinner { get; set; }
}

次に、UI から applicationData ストレージへのコンテンツへの送信に取り掛かります。

using System.IO
OnClickEvent()
{
    Entity ent = new Entity();
    ent.name = tbxName.Text;
    ent.age = int.Parse(tbxAge.Text);
    ent.dinner = tbxDinner.Text;

    //save
        var myStream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync("[PUT-HERE-NAME].txt", CreationCollisionOption.ReplaceExisting);

        using (StreamWriter writer = new StreamWriter(myStream))
        {
            var results = JsonConvert.SerializeObject(ent);

            writer.Write(results);
        }
}

次に、書き込まれたデータをストレージから読み取ることに取り組みましょう。ここでは、Stream Reader を使用します。

using System.IO;
using Newtonsoft.Json;
OnClickEvent
{
    Entity ent = new Entity();
    string content = string.Empty;
        var localFolder = ApplicationData.Current.LocalFolder;
        await localFolder.CreateFileAsync("test.txt", CreationCollisionOption.OpenIfExists);
        var stream = await localFolder.OpenStreamForReadAsync("test.txt");
        using (StreamReader reader = new StreamReader(stream))
        {
            content = await reader.ReadToEndAsync();

            ent= JsonConvert.DeserializeObject<Entity>(content);

        }
}

読み取りが可能になったら、ユーザーにデータを表示できます。

tbxName.Text = ent.name;
tbxAge.Text = ent.age.ToString();
tbxDinner.Text = ent.dinner

問題が発生した場合や、何かわからないことがあれば、お気軽にお尋ねください。

于 2016-08-11T20:21:25.700 に答える
0

これら 3 つの TextBox からの入力をローカルに保存したい

ローカル、つまりファイル内ですか?はいの場合、行ごとに 1 つの配列項目を保存できます。

System.IO.File.WriteAllLines("textfile.txt", answer);

そして、別の瞬間に、answerもう一度作成できます:

string[] answer = System.IO.File.ReadAllLines("textfile.txt");

編集:電話アプリを開発しているので、使用する方が良いですStorageFile

StorageFolder folder =
    Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile sampleFile =
    await folder.CreateFileAsync("test.txt", CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteTextAsync(sampleFile, string.Join(";", answer));

これにより、データが次のように区切られたファイルに回答が保存されます。;

読み返すには:

string text = await Windows.Storage.FileIO.ReadTextAsync(sampleFile);
string answer = text.Split(';');
于 2016-08-11T20:03:34.037 に答える