Private Sub GetCurrentState()
Dim info As String = "The control is in the following state(s):" + vbcrlf + vbcrlf
' The CurrentState property is expressed in terms of bit flags,
' since the control can be in more than one distinct state at any
' given time. We will strip each bit that is set until we are left with
' no set bits, recording the corresponding state value with each iteration.
Dim state As Long = Me.ultraMonthViewMulti1.CurrentState
Dim mask As Long = 1
While (state > 0)
' See if the bit that corresponds to the current value of the mask
' is set if it is, get the name of the enumeration for that state
If ((state And mask) <> 0) Then
Dim controlState As MonthViewMultiState = mask
info += controlState.ToString() + vbcrlf
End If
' Strip out the bit so we know when to exit this while loop
state = state And (Not mask)
' Multiply the mask by 2 to set it to the next power of 2,
' effectively shifting the bit position we are checking one
' place to the right
mask *= 2
End While
' Display the state information in a message box
MessageBox.Show(info, "GetCurrentState", MessageBoxButtons.OK)
End Sub