【发布时间】:2016-02-20 01:58:36
【问题描述】:
我正在编写一个简单的文本编辑器,目前我在打开功能时遇到了问题。我可以成功地从文件中读取文本,但是我遇到的麻烦是将它导入到文本框中。另外,我知道已经有人问过这样的问题,但是我无法从其中任何一个那里得到可行的解决方案(相信我,我已经尝试了好几个小时)。 这是我当前打开的函数:
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openDialog = new OpenFileDialog();
openDialog.Filter = ".TXT File|*.txt|.BAT File|*.bat|All Files|*.*";
openDialog.Title = "Open file";
openDialog.ShowDialog();
if (openDialog.FileName != "")
{
path = openDialog.FileName;
try
{
string[] lines = File.ReadAllLines(path);
//all text from file is now stored in the array "lines"
//put it into text box
for (int i = 0; i < lines.Length; i++)
{
mainTextEntry.AppendText(lines[i]);
}
}
catch (Exception ex)
{
MessageBox.Show("Error while opening file. Original error:\n\n" + ex);
}
}
}
请允许我从这段代码中指出几点:
- 我的文本框名为 mainTextEntry。
- 我的 openFileDialog 被称为 openDialog。
- Lines 是一个数组,包含读入的文本。
- 您可以忽略底部的catch,这只是为了防止崩溃。
好的,上面的代码给出以下输出:
hellotherehow are you?
如你所料,我正在阅读的文件中有一些换行符:
hello
there
how are you?
当然,这就是我想在 mainTextEntry.Text 中打印的内容。我该怎么做呢?
编辑:完整的源代码可以在这里找到:MainWin.cs(如果你是偏执狂click here)
【问题讨论】:
-
mainTextEntry.Lines = File.ReadAllLines(path); -
我假设您已将
multiline设置为 true? -
不 - 这很好。我只是确保否则
Environment.NewLine是多余的。奇怪的问题。 -
@odixon 试试我调整后的代码中的代码。
StringBuilder对此太过分了,而且可能是多余的。但我想确定一下。 -
@odixon - 老实说,您选择什么选项并不重要。除非您出于格式化目的需要 RTB 的功能,否则它是矫枉过正的。老实说,我认为您的多行属性设置为 false。
标签: c# winforms visual-studio