I think there is some trouble in Reflection land. Can someone else test this and see if they get the same result? I'll post just the code so nobody has to convert from 2002 or 2003.

VB Code:
  1. Public Class Test
  2.     Private _Name As String
  3.     Public ID As Integer = 0
  4.  
  5.     Public ReadOnly Property Name() As String
  6.         Get
  7.             Return _Name
  8.         End Get
  9.     End Property
  10.  
  11.     Public Sub Test()
  12.         Dim bf As Reflection.BindingFlags = Reflection.BindingFlags.Public
  13.         Dim fi As Reflection.FieldInfo
  14.         For Each fi In Me.GetType.GetFields(bf)
  15.             MsgBox(fi.Name, , "Worked WITH flags")
  16.         Next
  17.         For Each fi In Me.GetType.GetFields
  18.             MsgBox(fi.Name, , "Worked withOUT flags")
  19.         Next
  20.     End Sub
  21.  
  22. End Class
  23.  
  24. 'the test in a form on a button click or whatever
  25.         Dim t As New Test
  26.         t.Test()

I only get one message box and there should be two. It seems that the GetFields, GetProperties, GetMembers methods used in reflection only work when no flags are passed to them. If you pass any BindingFlags in then it returns nothing all the time even though its oberloaded to take such.