Entfernen Sie die Titelleiste in Windows Forms

82

Wie kann ich den blauen Rand über dem Fensterformular entfernen? (Ich kenne den Namen nicht genau.)

lkj
quelle
3
Es heißt TitleBar und Sie können es wahrscheinlich ausblenden, indem Sie die Rahmenstil-Eigenschaft des Formulars in keinen oder keinen Rand ändern.
Davide Piras

Antworten:

140

Sie können die Eigenschaft FormBorderStyleim Designer oder im Code auf none setzen:

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
P-Storm
quelle
Leider gibt es unter Windows 10 (zumindest bei einigen Builds) ein Problem mit der GrößenänderungFormBorderStyle.None von Formularen .
Rekshino
75

Wenn Blue Border thats on top of the Window FormSie damit Titelleiste meinen , setzen Sie die Forms- ControlBoxEigenschaft auf falseund die TextEigenschaft auf leere Zeichenfolge ("").

Hier ist ein Ausschnitt:

this.ControlBox = false;
this.Text = String.Empty;
Nika G.
quelle
8
Ihre Lösung hat den Vorteil, dass Sie den Rahmenstil auf Keine setzen, weil ... der Rand intakt bleibt :) +1
Spook
Und irgendwie, wenn Sie es über FormBorderStyle.Nonees tun, können Sie nicht mehr auf dem Formular zeichnen (OnPaint legt ein Bild in einer Bildbox fest, auf die es Dockeingestellt ist Fill), hat einwandfrei funktioniert, bis ich die Rahmeneinstellung mit geändert habe FormBorderStyle.None, aber auf diese Weise funktioniert das Zeichnen immer noch für ich :)
DrCopyPaste
@ JohnNguyen funktioniert nicht? das ist seltsam, bist du sicher, dass du es richtig implementiert hast?
Nika G.
2
Diese Lösung scheint in Windows 10 wirklich schlecht auszusehen - die "versteckte" Titelleiste verschwindet nicht vollständig - und hinterlässt oben im Fenster eine "Beule". Ich gehe davon aus, dass dies durch die dünnen Fensterränder von Windows 10 verursacht wird. Ich habe keinen Weg gefunden, dies zu umgehen. Sieht so aus, als würde ich den FormBorderStyle.None- Weg gehen.
Fool Running
1
Das Setzen des FormBorderStyle auf Sizable mit dem obigen Vorschlag funktioniert, aber seien Sie gewarnt, dass Windows 10 eine unansehnliche Leiste am oberen Rand des Fensters außerhalb des Client-Rechtecks ​​hinzufügt, die als Greifbereich / Größenänderungsrand für die vertikale Größenänderung des Fensters erscheint (es Anscheinend wird der obere Rand innerhalb des sichtbaren Formularrahmens und die anderen außerhalb von o_O) gerendert.
Fusi
23

Fügen Sie dieses Formular auch zu Ihrem Formular hinzu, damit es noch ziehbar ist.

Fügen Sie es einfach direkt vor dem Konstruktor hinzu (die Methode, die InitializeComponent () aufruft.


private const int WM_NCHITTEST = 0x84;
private const int HTCLIENT = 0x1;
private const int HTCAPTION = 0x2;

///
/// Handling the window messages
///
protected override void WndProc(ref Message message)
{
    base.WndProc(ref message);

    if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
        message.Result = (IntPtr)HTCAPTION;
}

Dieser Code stammt von: https://jachman.wordpress.com/2006/06/08/enhanced-drag-and-move-winforms-without-having-a-titlebar/

Um nun die Titelleiste zu entfernen und dennoch einen Rand zu haben, kombinieren Sie den Code aus der anderen Antwort:

this.ControlBox = false;

this.Text = String.Empty;

mit dieser Zeile:

this.FormBorderStyle = FormBorderStyle.FixedSingle;


Fügen Sie diese 3 Codezeilen in das OnLoad-Ereignis des Formulars ein, und Sie sollten ein schönes "schwebendes" Formular haben, das mit einem dünnen Rand gezogen werden kann (verwenden Sie FormBorderStyle.None, wenn Sie keinen Rand möchten).

coding_is_fun
quelle
Diese Option vergrößert das Fenster. Viel besser als FormBorderStyle auf None zu setzen. Genau das, was ich wollte.
Antonio Rodríguez
hi @ AntonioRodríguez, wie kannst du die Größe dieses Formulars ändern? Ich habe ein normales Formular und habe es in das Load-Ereignis eingefügt. Es zeigt einen einzeiligen Rand + kein Titelleistenformular, kann jedoch die Größe nicht ändern (ich bin unter Windows 10). This.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
haiduong87
11
 Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Joran Dob
quelle
10

Satz FormsBorderStyledes Formulars auf None.

Wenn Sie dies tun, liegt es an Ihnen, wie Sie die Zieh- und Schließfunktion des Fensters implementieren.

Maxim V. Pavlov
quelle
Es gibt keine Möglichkeit, eine große Form ohne Rand beizubehalten und das nervige kleine Stück Titelleiste oben nicht zu haben. Selbst wenn Sie Win32 direkt verwenden, wird es nicht entfernt. Wenn Sie keinen Rand haben, müssen Sie Ihre eigenen Methoden zum Schließen, Maximieren und Minimieren implementieren, die einfach genug sind. Die Implementierung einer beträchtlichen Größe ist jedoch ein richtiger Schmerz, um kinderleicht zu sein. Ich habe es versucht, aber schließlich aufgegeben, es ist viel Arbeit für nicht viel Gewinn.
djack109
1

Ich teile meinen Code. form1.cs: -

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BorderExp
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

    }

    private void ExitClick(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void MaxClick(object sender, EventArgs e)
    {
        if (WindowState ==FormWindowState.Normal)
        {
            this.WindowState = FormWindowState.Maximized;
        }
        else
        {
            this.WindowState = FormWindowState.Normal;
        }
    }

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

Nun der Designer: -

namespace BorderExp
 {
   partial class Form1
  {
    /// <summary>
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    #region Windows Form Designer generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
        this.button1 = new System.Windows.Forms.Button();
        this.button2 = new System.Windows.Forms.Button();
        this.button3 = new System.Windows.Forms.Button();
        this.SuspendLayout();
        // 
        // button1
        // 
        this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
        this.button1.BackColor = System.Drawing.SystemColors.ButtonFace;
        this.button1.BackgroundImage = global::BorderExp.Properties.Resources.blank_1_;
        this.button1.FlatAppearance.BorderSize = 0;
        this.button1.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
        this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
        this.button1.Location = new System.Drawing.Point(376, 1);
        this.button1.Name = "button1";
        this.button1.Size = new System.Drawing.Size(27, 26);
        this.button1.TabIndex = 0;
        this.button1.Text = "X";
        this.button1.UseVisualStyleBackColor = false;
        this.button1.Click += new System.EventHandler(this.ExitClick);
        // 
        // button2
        // 
        this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
        this.button2.BackColor = System.Drawing.SystemColors.ButtonFace;
        this.button2.BackgroundImage = global::BorderExp.Properties.Resources.blank_1_;
        this.button2.FlatAppearance.BorderSize = 0;
        this.button2.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
        this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
        this.button2.Location = new System.Drawing.Point(343, 1);
        this.button2.Name = "button2";
        this.button2.Size = new System.Drawing.Size(27, 26);
        this.button2.TabIndex = 1;
        this.button2.Text = "[]";
        this.button2.UseVisualStyleBackColor = false;
        this.button2.Click += new System.EventHandler(this.MaxClick);
        // 
        // button3
        // 
        this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
        this.button3.BackColor = System.Drawing.SystemColors.ButtonFace;
        this.button3.BackgroundImage = global::BorderExp.Properties.Resources.blank_1_;
        this.button3.FlatAppearance.BorderSize = 0;
        this.button3.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
        this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
        this.button3.Location = new System.Drawing.Point(310, 1);
        this.button3.Name = "button3";
        this.button3.Size = new System.Drawing.Size(27, 26);
        this.button3.TabIndex = 2;
        this.button3.Text = "___";
        this.button3.UseVisualStyleBackColor = false;
        this.button3.Click += new System.EventHandler(this.MinClick);
        // 
        // Form1
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.BackgroundImage = global::BorderExp.Properties.Resources.blank_1_;
        this.ClientSize = new System.Drawing.Size(403, 320);
        this.ControlBox = false;
        this.Controls.Add(this.button3);
        this.Controls.Add(this.button2);
        this.Controls.Add(this.button1);
        this.Name = "Form1";
        this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
        this.Text = "Form1";
        this.Load += new System.EventHandler(this.Form1_Load);
        this.ResumeLayout(false);

    }

    #endregion

    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.Button button2;
    private System.Windows.Forms.Button button3;
    }
   }

der Screenshot: - NoBorderForm

Stephen Kennedy
quelle