Q:

Right alignment of items in Windows. Forms. ListBox

Is there a proper way to align items to the right for ListBoxes from the .net Windows. Forms? 
You can use 
example_box = ListBox()
example_box. RightToLeft = RightToLeft. Yes

This enables the right alignment, but also prints your items right to left.  Also the formatting does some really strange things here:
'% one two 4.72' gets displayed as 'one two 4.72 %'
For digits only this works quite well, but feels rather wonky.  Are there better solutions? 

A:

RightToLeft layout is meant for the Arabic and Hewbrew cultures, they write text right-to-left.   It also affects how text is rendered, you found a side-effect.   You need to use owner-draw to get it the way you want it.   Add a new class to your project and paste the code shown below.   Compile.   Drop the new control from the top of the toolbox onto your form. 
using System;
using System. Drawing;
using System. Windows. Forms;

class ReverseListBox : ListBox {
    public ReverseListBox() {
        this. DrawMode = DrawMode. OwnerDrawFixed;
    }
    protected override void OnDrawItem(DrawItemEventArgs e) {
        e.DrawBackground();
        if (e.Index >= 0 && e.Index < this. Items. Count) {
            var selected = (e.State & DrawItemState. Selected) == DrawItemState. Selected;
            var back = selected ?  SystemColors. Highlight : this. BackColor;
            var fore = selected ?  SystemColors. HighlightText : this. ForeColor;
            var txt = this. Items[e. Index].ToString();
            TextRenderer. DrawText(e. Graphics, txt, this. Font, e.Bounds, fore, back, TextFormatFlags. Right | TextFormatFlags. SingleLine);
        }
        e.DrawFocusRectangle();
    }
}

