Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying Text Content

Tags:

c#

text

wpf

Pretty simple one I hope. I have an article of text that I want to display in a window. Now rather than have this massive load of text in the centre of my code, can I add it as a Resource and read it out to the window somehow?

For those asking why, it's simply because it is a massive article and would be very ugly looking stuck in the middle of my code.

UPDATE FOR H.B.

I have tried a number of different approaches to this and am currently looking into the GetManifestResourceStream and using an embeddedResource (txt file) and writing that out to screen. Haven't finished testing it yet but if it works it would be a heck of a lot nicer than copying and pasting the entire text 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!");
                        }

My query remains, is there a better way of achieving this (assuming this is even successful) Thanks

NOTE

In my example above I only want one line of text. If you were adapting this to read a number of lines from a file you would change it like so;

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;
        }
like image 651
windowsgm Avatar asked May 07 '26 04:05

windowsgm


1 Answers

Add the file as a resource and, in your code, load it into a string.

    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();
like image 146
gͫrͣeͬeͨn Avatar answered May 08 '26 18:05

gͫrͣeͬeͨn



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!