我正在使用listView来显示用户完成的条目,并根据输入的值突出显示它们。将一行写入列表视图后,我将同一行文本保存到文件中。不幸的是,当我写入文件时,我覆盖了已经存在的内容。我需要将我的最新行附加到文件的末尾,或者每次用户添加条目时都必须写入整个列表。
以下是我到目前为止对某些情况以及为简洁起见删除了 if 语句的情况。
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
if(tbSystolic.Text != "" && tbDiastolic.Text != "") {
string bpLevel = "";
if(Convert.ToInt32(tbSystolic.Text) < 90 || Convert.ToInt32(tbDiastolic.Text) < 60) bpLevel = "Lo";
//[other if statements removed to save space...]
string row = tbSystolic.Text+"/"+tbDiastolic.Text+" "+bpLevel+" @ "+tpTime.Time+" on "+dpDate.Date.ToString("MM/dd/yyyy");
ListViewItem item = new ListViewItem();
item.Content = row;
//[other stuff done to 'item' removed to save space...]
lvReadings.Items.Insert(0,item);
saveReadings(row);
}
}
async void saveReadings(string row)
{
StorageFile readingsFile = await localFolder.CreateFileAsync(READINGSFILE, CreationCollisionOptin.OpenIfExists);
await FileIO.WriteTextAsync(readingsFile,row);
}
我想最后一行是实际问题所在。我想把这一行加到最后。如果这是不可能的,那也没关系。我只是想确定一下。我没有看到任何方法可以打开不需要异步的文件,而且我不能只是将"异步"添加到主页:页面。
只需调用 AppendTextAsync
而不是 WriteTextAsync
即可。
async void saveReadings(string row)
{
StorageFile readingsFile = await localFolder.CreateFileAsync(READINGSFILE, CreationCollisionOptin.OpenIfExists);
await FileIO.AppendTextAsync(readingsFile,row);
}