it-swarm.com.de

Windows Forms: Wie verstecke ich die Schaltfläche Schließen (x)?

Ich habe ein modales Dialogfeld und muss die Schaltfläche Schließen (X) ausblenden, kann aber nicht ControlBox = false Verwenden, da ich die Schaltflächen Minimieren und Maximieren beibehalten muss.

Ich muss nur die Schaltfläche "Schließen" ausblenden. Gibt es eine Möglichkeit, dies zu tun?

Danke vielmals!

Update: Ich hatte die Erlaubnis, es zu deaktivieren, was einfacher ist :) Vielen Dank an alle!

131
stefano m

Sie können es nicht ausblenden, aber Sie können es deaktivieren, indem Sie die CreateParams-Eigenschaft des Formulars überschreiben.

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;
    }
}

Quelle: http://www.codeproject.com/KB/cs/DisableClose.aspx

132
Daniel A. White

Wir können die Schaltfläche zum Schließen des Formulars ausblenden, indem wir this.ControlBox=false;

146
Abhishek.Chopra

Nun, Sie können es ausblenden, indem Sie das gesamte Systemmenü entfernen:

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

Dadurch werden natürlich die Schaltflächen zum Minimieren und Maximieren entfernt.

Wenn Sie das Systemmenü beibehalten, aber das Schließen-Element entfernen, bleibt die Schließen-Schaltfläche erhalten, ist jedoch deaktiviert.

Die letzte Alternative ist, den Nicht-Client-Bereich selbst zu malen. Das ist ziemlich schwer zu verstehen.

24
David Heffernan

sie können das Schließfeld mit ausblenden

this.ControlBox = false;

und vergessen Sie nicht, Leerzeichen in this.Text = " " einzufügen, damit es so aussieht

enter image description here

12
Ramgy Borja

Wenn Sie es wirklich ausblenden möchten, wie in "nicht sichtbar", müssen Sie wahrscheinlich ein randloses Formular erstellen und die Beschriftungskomponenten selbst zeichnen. In der VisualStyles-Bibliothek sind die Windows Elements verfügbar. Sie müssten auch die Funktionalität zum Ändern der Größe des Formulars oder zum Verschieben des Formulars durch Ziehen der Beschriftungsleiste wieder erweitern. Ganz zu schweigen vom Systemmenü in der Ecke.

In den meisten Fällen ist es schwer zu rechtfertigen, dass die Schaltfläche "Schließen" nicht verfügbar ist, insbesondere wenn Sie ein modales Formular mit minimierenden Funktionen wünschen. Das Minimieren einer modalen Form macht wirklich keinen Sinn.

7
LarsTech

In den Eigenschaften Ihres Formulars setzen Sie "Kontrollkästchen" = "Falsch", aber es wird auch "Minimiert" und "Maximieren" ausgeblendet.

2
Muhammad Haroon

Nun, Sie können die Schließen-Schaltfläche ausblenden, indem Sie den FormBorderStyle im Eigenschaftenbereich oder programmgesteuert im Konstruktor ändern, indem Sie Folgendes verwenden:

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

anschließend erstellen Sie ein Menüleistenelement, um die Anwendung zu beenden.

prost

1
Josh John