Отключить кнопку закрытия в форме окна - PullRequest
2 голосов
/ 19 июня 2010

Я нашел этот код в интернете, но не уверен, как его использовать.Также мне нужно включить его обратно после завершения работы.Помогите пожалуйста.

Private Const CP_NOCLOSE_BUTTON As Integer = &H200

Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
    Get
        Dim myCp As CreateParams = MyBase.CreateParams
        myCp.ClassStyle = myCp.ClassStyle Or CP_NOCLOSE_BUTTON
        Return myCp
    End Get
End Property

1 Ответ

3 голосов
/ 19 июня 2010

Вы должны вставить это в код вашей формы, чтобы использовать его.Это, однако, навсегда отключает кнопку закрытия.Для динамического выполнения требуется совсем другой код, вам нужно изменить системное меню.Вставьте этот код в форму и используйте свойство CloseEnabled в своей логике:

Public Property CloseEnabled() As Boolean
    Get
        Return mCloseEnabled
    End Get
    Set(ByVal value As Boolean)
        If value <> mCloseEnabled Then
            mCloseEnabled = value
            setSystemMenu()
        End If
    End Set
End Property
Private mCloseEnabled As Boolean = True

Protected Overrides Sub OnHandleCreated(ByVal e As System.EventArgs)
    MyBase.OnHandleCreated(e)
    setSystemMenu()
End Sub

Private Sub setSystemMenu()
    Dim menu As IntPtr = GetSystemMenu(Me.Handle, False)
    Dim enable As Integer
    If Not mCloseEnabled Then enable = 1
    EnableMenuItem(menu, SC_CLOSE, enable)
End Sub

'' P/Invoke declarations
Private const SC_CLOSE As Integer = &hf060
Private Declare Function GetSystemMenu Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal revert As Boolean) As IntPtr
Private Declare Function EnableMenuItem Lib "user32.dll" (ByVal hMenu As IntPtr, ByVal IDEnableItem As Integer, ByVal wEnable As Integer) As Integer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...