9 november 2011

Over lijnen en nieuwe lijnen

In Visual Basic kan je op veel manieren een nieuwe lijn beginnen, bijvoorbeeld:

MessageBox.Show("Dag " + vbNewLine +
                "Meneer, " + Environment.NewLine +
                "Alles " + ControlChars.NewLine +
                "Naar wens?")

Vooral de klasse ControlChars is handig, want die bevat ook nog handige properties om tabs, formfeeds, … toe te voegen.

Wil je bovenstaand voorbeeld omzetten naar C#, dan blijven twee opties over:

MessageBox.Show("Dag \r\n" +
                "Meneer " + Environment.NewLine +
                "Alles \n" +
                "Naar wens?");

Ofwel werk je met Environment.NewLine, dan voeg je het nieuwelijn-teken toe dat voor het platform (in mijn geval Windows 7) gangbaar is. Ofwel werk je met de codes die vanuit de C-taal gegroeid zijn: \r\n is voor windowsplatformen het nieuwelijnteken voor tekstbestanden, \n is dat voor unixvarianten. Dit laatste werkt echter wel voor het voorbeeld hierboven.

En wat als je toch wil volharden en gebruik wil maken van ControlChars? Wel, dan moet je in eerste instantie de namespace Microsoft.VisualBasic toevoegen aan je C#-project. Dit kan door te rechtsklikken in je project op References en vervolgens via Add Reference het bestand Microsoft.VisualBasic.dll toe te voegen. Vervolgens importeer je deze namespace bovenaan in je bestand:

using Microsoft.VisualBasic;

En nu kan je deze klasse gebruiken in je C#-programma. Belangrijk nadeel: je moet een hele assembly (dll) toevoegen en laden in het geheugen omwille van slechts één klasse. Daarom kan je eventueel de raad uit dit artikel volgen en je eigen ControlChars maken, eventueel in een aparte namespace (bv. KrisHermans.Utils):

namespace KrisHermans.Utils
{
    public class ControlChars
    {
        public const string CrLf = "\r\n";
        public const string NewLine = Environment.NewLine;
        public const char Cr = (char)13;
        public const char Lf = (char)10;
        public const char Back = (char)8;
        public const char FormFeed = (char)12;
        public const char Tab = (char)9;
        public const char VerticalTab = (char)11;
        public const char NullChar = (char)0;
        public const char Quote = (char)34;
    }
}

Geen opmerkingen:

Een reactie plaatsen