Er ... right ... well.... <cough> ...

Real life being what it is I may have to give this slightly less priority than, you know, earning a living, eating and so on so I'm not setting myself any deadlines but if you want to have a try at this on your own while I dilly and dally, this is how far I got last night on the listbox project I already talked about. There are added complications with the listview but it's basically the same principle ...

vb.net Code:
  1. Private Sub ListBox1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
  2. ' Aim: to show the last letter of a selected 3 char string in red and bold font
  3.  
  4.         Dim normal As String 'the normal bit
  5.         Dim bold As String 'the bold bit
  6.         Dim NewX = e.Bounds 'the drawing rectangle
  7.         Dim f = New Font(e.Font, FontStyle.Bold)
  8.         Dim Metric As SizeF 'this determines the display size of a string
  9.         e.Graphics.PageUnit = GraphicsUnit.Pixel 'probably it is already but just to make sure
  10.  
  11.         Try
  12.             If e.Index = ListBox1.SelectedIndex Then
  13.  
  14.                 normal = ListBox1.Items(e.Index).ToString
  15.                 bold = normal.Substring(2)
  16.                 normal = normal.Substring(0, 2)
  17.                 Metric = e.Graphics.MeasureString(normal, e.Font, e.Bounds.Width, StringFormat.GenericTypographic) ' size the rectangle for first section
  18.                 NewX.X = e.Bounds.X + Metric.Width 'move draw position to end of first section rectangle
  19.  
  20.                 e.Graphics.DrawString(normal, e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
  21.                 e.Graphics.DrawString(bold, f, Brushes.Red, NewX, StringFormat.GenericDefault)
  22.  
  23.  
  24.             Else
  25.                 e.Graphics.DrawString(ListBox1.Items(e.Index).ToString, e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault) 'everything just as it usually is
  26.  
  27.             End If
  28.         Catch
  29.  
  30.         End Try
  31.  
  32.     End Sub