Windows Forms: jak ukryć przycisk Zamknij (x)?

Mam okno modalne i muszę ukryć przycisk Zamknij (X), ale nie mogę użyć ControlBox = false, ponieważ muszę zachować przyciski minimalizacji i maksymalizacji.

Muszę ukryć przycisk Zamknij, czy jest jakiś sposób, aby to zrobić?

Wielkie dzięki!

Update: miałem prawo go wyłączyć, co jest prostsze :) dzięki wszystkim!

 118
Author: g t, 2011-09-05

8 answers

Nie można jej ukryć, ale można ją wyłączyć, nadpisując właściwość CreateParams formularza.

private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
    get
    {
       CreateParams myCp = base.CreateParams;
       myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ;
       return myCp;
    }
}

Źródło: http://www.codeproject.com/KB/cs/DisableClose.aspx

 120
Author: Daniel A. White,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-27 06:45:19

Możemy ukryć przycisk Zamknij w formularzu, ustawiając this.ControlBox=false;

 125
Author: Abhishek.Chopra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-09 20:42:38

Możesz to ukryć, usuwając całe menu systemowe:

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}

Oczywiście usuwa przyciski Minimalizuj i Maksymalizuj.

Jeśli zachowasz menu systemowe, ale usuniesz pozycję Zamknij, to przycisk Zamknij pozostaje, ale jest wyłączony.

Ostatnią alternatywą jest samodzielne malowanie obszaru poza klientem. Ciężko to zrozumieć.

 25
Author: David Heffernan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-04 20:36:11

Jeśli naprawdę chcesz go ukryć, jak w "niewidoczny", prawdopodobnie będziesz musiał utworzyć formularz bez obramowania i samodzielnie narysować komponenty podpisu. Biblioteka VisualStyles posiada dostępne elementy systemu Windows. Trzeba by również dodać z powrotem w funkcji zmiany rozmiaru formularza lub przenoszenia formularza, chwytając Pasek napisów. Nie wspominając o menu systemowym w rogu.

W większości przypadków trudno jest uzasadnić, że przycisk "zamknij" nie jest dostępny, zwłaszcza gdy chcesz forma modalna z możliwością minimalizacji. Minimalizacja formy modalnej naprawdę nie ma sensu.

 7
Author: LarsTech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-04 20:34:09

Możesz ukryć zamknij okno za pomocą

this.ControlBox = false;

I nie zapomnij dodać spacji do this.Text = " ", aby zrobić to tak

Tutaj wpisz opis obrazka

 7
Author: Ramgy Borja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-31 07:31:10

We właściwościach formularza Ustaw 'Control Box' = False, ale to ukryje zminimalizowane i zmaksymalizowane.

 3
Author: Muhammad Haroon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-27 01:23:45

Cóż, możesz ukryć przycisk zamknięcia, zmieniając FormBorderStyle z sekcji Właściwości lub programowo w konstruktorze za pomocą:

public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}

Następnie tworzysz pasek menu, aby zamknąć aplikację.

Cheers

 2
Author: Josh John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 12:49:29

Jeśli jest to opcja możesz ustawić

 this.FormBorderStyle = FormBorderStyle.None;

Następnie odtworzyć przyciski Minimalizuj i Maksymalizuj

    private void button1_Click(object sender, EventArgs e)
    {
        this.WindowState = FormWindowState.Maximized;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        this.WindowState = FormWindowState.Minimized;
    }
 -1
Author: Steve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-22 01:15:57