VB.NET 2005
.Net 2
The Microsoft Visual Basic dll included is:
%SystemRoot%\Microsoft.net\Framework\v2.0.50727\Microsoft.VisualBasic.dll
I have code that sets the WindowState property. I double clicked on WindowState in the code and got:
Public Property WindowState As FormWindowState
Get
Return DirectCast((Me._GetBorderStyle >> 8), FormWindowState)
End Get
Set(ByVal value As FormWindowState)
If ((value <> FormWindowState.Normal) AndAlso (value <> FormWindowState.Maximized)) Then
Throw New ArgumentException
End If
Me._SetBorderStyle(DirectCast((CInt(value) << 8), AGL_WINDOWSTYLE), AGL_WINDOWSTYLE.STATEMASK)
End Set
End Property
The code above is obviously wrong as it would not allow the WindowState to be changed to Minimized. What happened?
Edit: Cleared Reflector and reloaded executable and .NET dlls. Problem seems to have gone away. Code shown is now:
<DefaultValue(0), SRDescription("FormWindowStateDescr"), SRCategory("CatLayout")> _
Public Property WindowState As FormWindowState
Get
Return DirectCast(Me.formState.Item(Form.FormStateWindowState), FormWindowState)
End Get
Set(ByVal value As FormWindowState)
If Not ClientUtils.IsEnumValid(value, CInt(value), 0, 2) Then
Throw New InvalidEnumArgumentException("value", CInt(value), GetType(FormWindowState))
End If
If ((Not Me.TopLevel OrElse Not Me.IsRestrictedWindow) OrElse (value = FormWindowState.Normal)) Then
Select Case value
Case FormWindowState.Normal
MyBase.SetState(&H10000, False)
Exit Select
Case FormWindowState.Minimized, FormWindowState.Maximized
MyBase.SetState(&H10000, True)
Exit Select
End Select
If (MyBase.IsHandleCreated AndAlso MyBase.Visible) Then
Dim handle As IntPtr = MyBase.Handle
Select Case value
Case FormWindowState.Normal
SafeNativeMethods.ShowWindow(New HandleRef(Me, handle), 1)
Exit Select
Case FormWindowState.Minimized
SafeNativeMethods.ShowWindow(New HandleRef(Me, handle), 6)
Exit Select
Case FormWindowState.Maximized
SafeNativeMethods.ShowWindow(New HandleRef(Me, handle), 3)
Exit Select
End Select
End If
Me.formState.Item(Form.FormStateWindowState) = CInt(value)
End If
End Set
End Property
Any ideas on how I picked up the wrong code would be appreciated.
Edit 2: Found the System.Windows.Forms.dll with the strange code in the C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\Debugger\BCL directory. Still don't understand how it got loaded into Reflector.
.Net 2
The Microsoft Visual Basic dll included is:
%SystemRoot%\Microsoft.net\Framework\v2.0.50727\Microsoft.VisualBasic.dll
I have code that sets the WindowState property. I double clicked on WindowState in the code and got:
Public Property WindowState As FormWindowState
Get
Return DirectCast((Me._GetBorderStyle >> 8), FormWindowState)
End Get
Set(ByVal value As FormWindowState)
If ((value <> FormWindowState.Normal) AndAlso (value <> FormWindowState.Maximized)) Then
Throw New ArgumentException
End If
Me._SetBorderStyle(DirectCast((CInt(value) << 8), AGL_WINDOWSTYLE), AGL_WINDOWSTYLE.STATEMASK)
End Set
End Property
The code above is obviously wrong as it would not allow the WindowState to be changed to Minimized. What happened?
Edit: Cleared Reflector and reloaded executable and .NET dlls. Problem seems to have gone away. Code shown is now:
<DefaultValue(0), SRDescription("FormWindowStateDescr"), SRCategory("CatLayout")> _
Public Property WindowState As FormWindowState
Get
Return DirectCast(Me.formState.Item(Form.FormStateWindowState), FormWindowState)
End Get
Set(ByVal value As FormWindowState)
If Not ClientUtils.IsEnumValid(value, CInt(value), 0, 2) Then
Throw New InvalidEnumArgumentException("value", CInt(value), GetType(FormWindowState))
End If
If ((Not Me.TopLevel OrElse Not Me.IsRestrictedWindow) OrElse (value = FormWindowState.Normal)) Then
Select Case value
Case FormWindowState.Normal
MyBase.SetState(&H10000, False)
Exit Select
Case FormWindowState.Minimized, FormWindowState.Maximized
MyBase.SetState(&H10000, True)
Exit Select
End Select
If (MyBase.IsHandleCreated AndAlso MyBase.Visible) Then
Dim handle As IntPtr = MyBase.Handle
Select Case value
Case FormWindowState.Normal
SafeNativeMethods.ShowWindow(New HandleRef(Me, handle), 1)
Exit Select
Case FormWindowState.Minimized
SafeNativeMethods.ShowWindow(New HandleRef(Me, handle), 6)
Exit Select
Case FormWindowState.Maximized
SafeNativeMethods.ShowWindow(New HandleRef(Me, handle), 3)
Exit Select
End Select
End If
Me.formState.Item(Form.FormStateWindowState) = CInt(value)
End If
End Set
End Property
Any ideas on how I picked up the wrong code would be appreciated.
Edit 2: Found the System.Windows.Forms.dll with the strange code in the C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\Debugger\BCL directory. Still don't understand how it got loaded into Reflector.