2010-06-19 4 views
2

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

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 

ответ

3

Вы должны вставить это в код своей формы, чтобы использовать его. Это, однако, навсегда отключает кнопку закрытия. Для динамического использования требуется очень другой код, вам нужно изменить системное меню. Вставьте этот код в форму и используйте свойство 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 
Смежные вопросы