Ian,
Sorry for the misunderstanding, I thought it in a much simpler way. :P In fact thanks for pointing this issue out as it provides me a chance to learn the labeling system more myself. J
First I did a small change in your sample. I saw you created an 800 * 600 bitmap and put it in a pictureBox, which may not fit so well with that bitmap. So I created the bitmap with the pictureBox’s size instead.
Bitmap bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height );
Here is the result running your demo, I added the LineStyle just for easier understand.

Why only one label is displayed. One reason is that as all the roads are shown in the map, the length of each road is very small. To avoid the case that you have a long label for a short line, we just ignore drawing the labels for that case. We have a property TextStyle.TextLineSegmentRatio(0.9 by default), if a road’s label is longer than road.Length * TextStyle.TextLineSegmentRatio, it will not be displayed.
I added the following code and have another try. (I set it to double.MaxValue so there is no limit)
layer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.TextLineSegmentRatio = double.MaxValue;

Still seems not have enough labels? That’s because to avoid having too many labels in one small area, we divided the map into many grids and each grid we allow to draw at most one label. We has a property TextStyle.GridSize to set the size (in integer) of the grid, by default is 100.
Adding the following line to the code, here is the result.
layer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.GridSize = 5;

(I cannot post 3 pics in one post, so please see my next post as part 2)