UWP TextBox控件提供意外结果

时间:2017-06-03 00:21:04

标签: c# textbox uwp

简单文字编辑器

选中TextBox AcceptsReturn属性将文本框的多行内容保存到文本文件后,只有在记事本中打开时才会生成单行写入的所有文本。在UWP TextBox控件中加载文件时,它打开正常。我对旧的WPF TextBox控件没有这个问题。

我的程序有两个按钮,打开并保存。在两者之间有文本框。

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Popups;
using Windows.Storage.Pickers;
using Windows.Storage;

// ...
    StorageFile selectedFile;

    private async void openFileButton_Click(object sender, RoutedEventArgs e)
    {
        contentsTextBox.Text = string.Empty;
        addressText.Text = string.Empty;
        selectedFile = null;

        FileOpenPicker openDialog = new FileOpenPicker();
        openDialog.FileTypeFilter.Add("*");

        selectedFile = await openDialog.PickSingleFileAsync();
        if (selectedFile != null)
        {
            addressText.Text = selectedFile.Path;

            try
            {
                contentsTextBox.Text = await FileIO.ReadTextAsync(selectedFile);
            }

            catch (ArgumentOutOfRangeException) { } // In case file is empty
        }
    }

    private async void saveFileButton_Click(object sender, RoutedEventArgs e)
    {
        if (selectedFile != null)
        {
            await FileIO.WriteTextAsync(selectedFile, contentsTextBox.Text);
            await new MessageDialog("Changes saved!").ShowAsync();
        }
    }

1 个答案:

答案 0 :(得分:1)

在TextBox的Text属性中,行尾由\r表示。但是,记事本希望\r\n换行。

有关两者(和其他变体)之间差异的更多信息,see this

只需更换" \ r"到" \ r \ n"在将文本保存到文件之前。

await FileIO.WriteTextAsync(selectedFile, contentsTextBox.Text.Replace("\r", "\r\n"));