0

我对编程完全陌生。

我正在尝试创建一个非常简单的应用程序,其中包含三个文本框和一个最终文本块。我想将这三个 TextBox 的输入保存在本地,这样我就可以在一个字符串中的页面底部的 TextBlock 中读取和显示它。

截屏

我已经读过 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 中的一个字符串中读取和显示该输入?

我希望应用程序保存并能够在应用程序关闭并再次重新打开后显示输入。

对不起,我知道这是非常简单的东西......

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

我想将这三个文本框的输入保存在本地

在本地,您的意思是在文件中?如果是,您可以每行保存一个数组项,这样做:

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 回答