Formatted Printing on Console Application
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums
Results 1 to 2 of 2

Thread: Formatted Printing on Console Application

Hybrid View

  1. #1
    Join Date
    Jul 2013

    Formatted Printing on Console Application

    I've got a console application that stores information. I have an option that the end user can select that will print the colon-delimited file into a formatted print. I want several different columns, but I want to control the width. I know certain information cannot be longer than X number of characters. For instance I want to print something like:

    Number | Name | Address | Zip |
    1 Frank 123 Main St. 47887

    Does C# have any functionality that will allow this? I was thinking Console.Write would work, but I want to be able to pad each side with whitespace.

    Any information would be greatly appreciated!

  2. #2
    Arjay's Avatar
    Arjay is offline Moderator / MS MVP Power Poster
    Join Date
    Aug 2004

    Re: Formatted Printing on Console Application

    Padding is specified in String.Format with "{0,-xx}" where xx is the number of characters to pad.

    So you can print out the header information with
    var formatter = "{0,-10}{1,-50}{2,-60}{3,-10}";
    Console.WriteLine(String.Format(formatter, "Number", "Name", "Address", "Zip"));
    Each entry could be printed as (assuming a class name Entry contains each item data):
    Console.WriteLine(String.Format(formatter, entry.Number, entry.Name, entry.Address, entry.Zip));
    Another way to do this for simple apps is to override a class's ToString() method.

    public class Entry
      public int Number { get; set; }
      public string Name { get; set; }
      public string Address { get; set; }
      public string Zip { get; set; }
      public override ToString()
        return String.Format(Formatter, Number, Name, Address, Zip);
      public static string Formatter =  "{0,-10}{1,-50}{2,-60}{3,-10}";
    Then you can print the header and each line item as follow (assuming entries are a List<Entry> collection):
    Console.WriteLine(String.Format(Entry.Formatter, "Number", "Name", "Address", "Zip"));
    foreach(var entry in entries)
    See String.Format in msdn for more info.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Windows Mobile Development Center

Click Here to Expand Forum to Full Width

This is a survey!

HTML5 Development Center