Frage

Ich habe die Schließen-Schaltfläche aus unserer VB .NET 2005 MDI-Anwendung zu entfernen oder deaktivieren gefragt. Es sind keine nativen Eigenschaften auf einer Form, die es Ihnen ermöglichen, die Schließen-Schaltfläche grau aus, damit der Benutzer es nicht in der Nähe kann, und ich erinnere mich an nichts in der Formularklasse zu sehen, die mir erlauben, dies zu tun.

Gibt es vielleicht einen API-Aufruf oder eine magische Eigenschaft festlegen oder die Funktion Aufruf in .NET 2005 oder höher, dies zu tun?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Weitere Informationen:

Ich brauche das Minimieren / Maximieren-Funktionalität

halten

Ich brauche die ursprüngliche Titelleiste zu halten, da die Zeichenmethoden des Formulars sind bereits sehr komplex.

War es hilfreich?

Lösung

Basierend auf den neuesten Informationen, die Sie zu Ihrer Frage hinzugefügt, bis zum Ende meiner Antwort überspringen.


Dies ist, was Sie Satz auf false müssen: Wie zu deaktivieren Schaltfläche zum schließen von Fenstern Form .NET-Anwendung mit

Dies ist die VB-Version von JDM Code:

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 

Andere Tipps

Sie können die Schließen-Schaltfläche und den engen Menüpunkt im Systemmenü deaktivieren, indem Sie den „Klassenstil“ des Fensters zu ändern. Fügen Sie den folgenden Code in das Formular:

const int CS_NOCLOSE = 0x200;

protected override CreateParams CreateParams {
    get {
        CreateParams cp = base.CreateParams;
        cp.ClassStyle |= CS_NOCLOSE;
        return cp;
    }
}

Dies wird nicht nur das Fenster stoppen geschlossen zu werden, aber es wird tatsächlich auf die Schaltfläche ausgegraut. Es ist C #, aber ich denke, es ist einfach, es zu VB zu übersetzen sein sollte.

Hier ist eine einfache Möglichkeit, die Schließen-Schaltfläche zu entfernen:
 1. Form wählen
 2. Nun zu Properties gehen.
 Finden 3. ControlBox und ändern Sie den Wert auf False.

Dies entfernt alle die Steuertasten (z. Minimieren, Maximieren Exit) und auch das Symbol auch die vor dem Titel in dem nach links ist.

Es sollte möglich sein, das OnClose-Ereignis des Formulars zu überschreiben. Dies ist üblich, wenn eine Anwendung minimiert auf der Taskleiste, wenn „geschlossen“.

Wenn Sie die X-Box auf dem Formular drücken. Die Form1_Closing wird zuerst gemacht, dann wird die Form1_Closed getan.

Die e.Cancel = True im Form1_Closing -. Verhindert Form1_Closed von daher aufgerufen wird, das Formular zu verlassen noch aktiv

Prevent das Formular zu schließen, aber versteckt sie:

Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    Me.WindowState = FormWindowState.Minimized 
    Me.Visible=false
    e.Cancel = True
End Sub

Sie können die ControlBox Eigenschaft auf False gesetzt, aber die ganze Titelleiste wird verschwunden sein, aber der Titel selbst ...

Was jmweb sagte hier OK ist als gut. Die X-Schließen-Schaltfläche wird nicht gehen, wenn Sie das Ereignis auf Formular Schließen abzubrechen. Aber dabei müssen Sie das Formular Bedürfnisse, die Prozesse lösen und dann das Formular zu schließen.

Me.Dispose()
Me.Close()

Das ist für mich gearbeitet Menüleiste verwenden.

Wählen Sie (oder klicken), um das Formular selbst Klicken Sie auf Ereignisse im Eigenschaftsfenster (das kleine Blitzsymbol). Suchen Sie nach Form.Closing und doppelklicken Sie darauf. Geben Sie dann: e.cancel=true

Erstellen eines Formulars ohne Titlebar in Visual Basic.

Zur Form Properties und setzt sowohl ControlBox und ShowIcon auf false gesetzt.

Dann klar alle der Text aus dem text Eigenschaft des Formulars.

gehen Sie auf Eigenschaften und wählen Sie aus Langeweile Stil wie keine

Wählen Sie einfach die gewünschte Form und im Eigenschaftenabschnitt gesetzt CONTROLBOX = false Das nur für mich gearbeitet:)

Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    Beep()
    e.Cancel = True
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top