I used the Console's CursorLeft and CursorTop properties to specify the exact areas of the screen where I wanted to print information. I ended up with a 'table' full of data.
Then I used the System.Diagnostics.Trace class and added a TextWriterTraceListener and a ConsoleTraceListener object to its Listeners collection.
Then I replaced all the instances of Console.Write with Trace.Write.
The data displayed as expected on the console. But on the text file the info was printed in the same order the info was outputted to the Console. ie: all the characters used to separate rows lumped together, followed by all the characters used to separate columns lumped together, followed by the actual data that was printed between those characters, all lumped together.
I can see why I ended up with this mess. The TextWriter is oblivious of the fact that the Console's cursor position was arbitrarily modified by the application code before and after each character and piece of data was printed to the Console.
Is there a way I can just grab the text that was printed to the console, ignoring the actual order in which the individual characters were printed, and save it as a string or directly print it to a file exactly as-it-is?