3

我希望很简单。我有一篇想要在窗口中显示的文本。现在,与其在我的代码中心放置大量文本,我可以将其添加为资源并以某种方式将其读出到窗口中吗?

对于那些问为什么的人,这仅仅是因为它是一篇庞大的文章,并且卡在我的代码中间会非常难看。

HB 更新

我已经尝试了许多不同的方法,目前正在研究GetManifestResourceStream并使用嵌入式资源(txt 文件)并将其写入屏幕。尚未完成测试,但如果它有效,那将比复制和粘贴整个文本要好得多txtbox1.Text = "...blah blah blah"

_textStreamReader = new    
StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Problem.Explaination.txt"));
                        try
                        {
                            if (_textStreamReader.Peek() != -1)
                            {
                                txtBlock.Text = _textStreamReader.ReadLine();
                            }
                        }
                        catch
                        {
                            MessageBox.Show("Error writing text!");
                        }

我的查询仍然存在,是否有更好的方法来实现这一点(假设这甚至是成功的)谢谢

笔记

在上面的示例中,我只想要一行文本。如果您正在调整它以从文件中读取多行,您可以像这样进行更改;

StreamReader _textStreamReader;
        _textStreamReader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Problem.Explaination.txt"));
        var fileContents = _textStreamReader.ReadToEnd();
        _textStreamReader.Close();

        String[] lines = fileContents.Split("\n"[0]);
        String[] lines2;
        Int16 count;
        foreach (string line in lines)
        {
        txtBlock.Text += line;
        }
4

2 回答 2

1

您可以将该文本放在文本文件中,然后在代码中读出

http://msdn.microsoft.com/en-us/library/db5x7c0d.aspx

于 2012-06-27T09:31:09.213 回答
1

将文件添加为资源,并在您的代码中将其加载到字符串中。

    StringBuilder sb = new StringBuilder();
    using (var stream = this.GetType().Assembly.GetManifestResourceStream("MyNamespace.TextFile.txt"))
    using(var reader = new StreamReader(stream))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            sb.AppendLine(line);
        }
    }
    ViewModel.Text = sb.ToString();
于 2012-06-27T10:57:28.897 回答