Frage Visual basic



  • Hallo,

    jede Form hat einen minimieren, vollbild und schließ button.
    Wo kann man das jeweilige deaktivieren ?



  • Mittels der Eigenschaften Form.MinimizeBox und Form.MaximizeBox kannst du die Buttons anzeigen/verstecken. Und mit Form.ControlBox kannst du das gesamte SystemMenu (inclusive Schließen-Button) anzeigen/verstecken.

    Wenn du jedoch die Buttons nur enablen/disablen willst, dann mußt du über die WinAPI-Funktionen SetSystemMenu und EnableMenuItem gehen.
    Hier mal Code in C#:

    static public class Win
        {
            [DllImport("user32.dll")]
            static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
    
            [DllImport("user32.dll")]
            static extern bool EnableMenuItem(IntPtr hMenu, uint uIdEnableItem, uint uEnable);
    
            internal const UInt32 SC_CLOSE = 0xF060;
    
            internal const UInt32 MF_BYCOMMAND = 0x00000000;
            internal const UInt32 MF_ENABLED   = 0x00000000;
            internal const UInt32 MF_GRAYED    = 0x00000001;
            internal const UInt32 MF_DISABLED  = 0x00000002;
    
            public static void EnableCloseButton(IWin32Window window, bool bEnabled)
            {
                  IntPtr hSystemMenu = GetSystemMenu(window.Handle, false);
    
                  EnableMenuItem(hSystemMenu, SC_CLOSE, (uint)(MF_BYCOMMAND | (bEnabled? MF_ENABLED : MF_GRAYED | MF_DISABLED)));
            }
    }
    

    Für die Minimize- und Maximize-Buttons müßtest du noch die Ids herausfinden...



  • Man kann es in den Eigenschaften des Forms ändern, ganz ohne Quellcode.
    Allerdings nur für Minimieren und Maximieren, wenn du den Schließen Button auch noch weg haben willst, dann wirst du das so machen müssen wie Th69 gepostet hat.

    Die Eigenschaft heißt FormBorderStyle um fest zu legen welchen "Typ" das Form (Fenster) haben soll und dann kannst du noch entsprechend MinimizeBox und MaximizeBox setzen.

    // edit:

    Hier ist noch ein Link aus der MSDN wo das auch noch alles etwas erklärt steht.

    Form.FormBorderStyle-Eigenschaft


Anmelden zum Antworten