2013-09-13 5 views
1

Я использую приведенный ниже код для отображения значка формы, но отключить значок кнопки закрытия. Это работает, но я хочу полностью скрыть кнопку. Как я могу это достичь?Как скрыть кнопку закрытия формы?

public partial class Form1 : Form 
{ 
    private const int CS_NOCLOSE = 0x200; 
    protected override CreateParams CreateParams 
    { 
     get 
     { 
      CreateParams mdiCp = base.CreateParams; 
      mdiCp.ClassStyle = mdiCp.ClassStyle | CS_NOCLOSE; 

      return mdiCp; 
     } 
    } 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

} 
+0

кнопки Закрыть скроет себя только в том случае, также скрыты все остальные кнопки (мин, макс, помощь). В противном случае кнопка с дисплеем отключена, но видима. Кроме того, окна winforms имеют встроенные свойства, которые могут контролировать видимость кнопок заголовка. Не нужно прибегать к переопределению CreateParams. –

+0

Чего вы хотите достичь? Просто скрывать кнопку закрытия и удерживать другие кнопки? Или скрывать весь блок управления? – iabbott

ответ

1

Вы не можете скрыть его, но вы можете отключить его по коду выше.

Лучше сделайте свою собственную форму с помощью своего собственного ящика управления без кнопки закрытия, а затем скройте блок управления родительской формы.

0

Попробуйте это, чтобы отключить кнопку закрытия (X), это в vb.net, вы можете преобразовать его в C#

Private Const SC_CLOSE As Integer = &HF060 
Private Const MF_GRAYED As Integer = &H1 

<DllImport("user32.dll")> _ 
Private Shared Function GetSystemMenu(hWnd As IntPtr, bRevert As Boolean) As IntPtr 
End Function 

<DllImport("user32.dll")> _ 
Private Shared Function EnableMenuItem(hMenu As IntPtr, wIDEnableItem As Integer, wEnable As Integer) As Integer 
End Function 

Public Sub EnableDisable(form As Form, isEnable As Boolean) 
    EnableMenuItem(GetSystemMenu(form.Handle, isEnable), SC_CLOSE, MF_GRAYED) 
End Sub 

Вызвать EnableDisable(Me, False) отключить и EnableDisable(Me, True) для включения

Он работает для меня

1

это будет скрывать все, что:

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 

теперь вы можете сделать большую панель контейнера и поместить настраиваемую кнопку, которая сделает что-то вроде кнопки Restore & Свернуть кнопку. ok ??

0

Кнопка закрытия закрывается только в том случае, если все остальные кнопки (мин., Макс., Справка) также скрыты.

но один способ, чтобы скрыть все это, чтобы установить форму границы непревзойденного,

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
Смежные вопросы