【问题标题】:C# - ReadLine() in a textboxC# - 文本框中的 ReadLine()
【发布时间】:2012-01-03 08:41:09
【问题描述】:

很抱歉问了些无聊的问题,但我是其中之一:)。

我可以使用Write 或WriteLine 编写一个.txt 文件,它会读取整个TextBox。问题是我读的时候。我无法使用 ReadLine 阅读它。它在一行上给出了整个文本。一定是阅读的问题,因为在记事本中,我正确获取了文件。

这种非常奇怪的行为的原因是什么,我该如何改变它? 包含 StreamReader 的方法

StreamReader streamreader = new StreamReader(openfiledialog.FileName);

textbox.Text = "";

while (!streamreader.EndOfStream)
{
    string read_line = streamreader.ReadLine();
    textbox.Text += read_line + "\n";
}

streamreader.Close();

包含 StreamWriter 的方法

StreamWriter streamwriter = new StreamWriter(savefiledialog.FileName);

streamwriter.Write(textbox.Text);

streamwriter.Close();

提前致谢。

更新:ReadToEnd 工作

【问题讨论】:

  • 你需要展示你的代码......
  • 显示你的代码,很难理解你做错了什么

标签: c# winforms textbox streamreader streamwriter


【解决方案1】:

这里有几种可能性。

  1. File中的文本不是UTF-8,所以需要转成UTF-8再分配给文本框。
  2. 文本框的字符数限制需要增加
  3. 文本框的宽度。文字换行可能会有所不同。

通常,如果您想要一次运行整个文件的文本,您将使用 ReadToEnd,如果您想要 1 行,则使用 ReadLine。这里的区别在于文件的编码。 1 文本编辑器中的行可能与另一行不同。一些文本编辑器在显示之前将文本转换为其他编码,而另一些则不会。推荐Notepad++,因为它会在底部告诉你文件是什么编码,让你更改编码并保存文件以供测试。

.net 基于字符串的 UTF-8 编码,因此文本编码的不同可能会产生很大的不同。

祝你好运

【讨论】:

    【解决方案2】:

    没有看到任何代码,我的最佳猜测是您在文本框和文本文件之间使用了不同的行分隔符。

    我猜你要么需要格式化数据以确保数据获得正确的源分隔符,要么更改文本框的换行符。

    【讨论】:

    • 好的,非常感谢(以及其他所有人),这确实是一个不同的行分隔符。显然 TextBox 使用了 RichTextBox 和 Label 之外的其他行分隔符。正确的线分隔符是 \n\r 而不是 \n。这可能是初学者的错误。很抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2010-11-10
    • 2013-02-26
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多