Eliminar la barra de título en Windows Forms

82

¿Cómo puedo eliminar el borde azul que está en la parte superior del formulario de ventana? (No sé el nombre exactamente).

lkj
fuente
3
se llama TitleBar y probablemente pueda ocultarlo cambiando la propiedad de estilo de borde del formulario a ningún borde o ninguno.
Davide Piras

Respuestas:

139

Puede establecer la propiedad FormBorderStyleen none en el diseñador o en el código:

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
P-Tormenta
fuente
Desafortunadamente, hay un problema en Windows 10 (al menos en algunas compilaciones) con FormBorderStyle.Noneel cambio de tamaño del formulario .
Rekshino
75

si Blue Border thats on top of the Window Formse refiere a la barra de título , establezca la ControlBoxpropiedad Forms en falsey la Textpropiedad en una cadena vacía ("").

aquí hay un fragmento:

this.ControlBox = false;
this.Text = String.Empty;
Nika G.
fuente
8
Su solución tiene la ventaja sobre el establecimiento de estilo de borde en Ninguno, porque ... que deja intacta la frontera :) 1
Espectro
Y de alguna manera, si lo hace a través de FormBorderStyle.None, le impide dibujar en el formulario de alguna manera (OnPaint establece una imagen en un cuadro de imagen que tiene su Dockconfiguración Fill), funcionó bien hasta que cambié la configuración del borde con FormBorderStyle.None, pero de esta manera, el dibujo todavía funciona para yo :)
DrCopyPaste
@JohnNguyen no funciona? eso es extraño, ¿estás seguro de que lo has implementado correctamente?
Nika G.
2
Esta solución parece verse realmente mal en Windows 10 - la barra de título "oculta" no desaparece por completo - dejando un "bulto" en la parte superior de la ventana. Supongo que esto se debe a los bordes delgados de la ventana de Windows 10. No he encontrado una forma de evitar esto. Parece que estoy atrapado en la ruta FormBorderStyle.None .
Fool Running
1
configurar FormBorderStyle en Sizable con la sugerencia anterior funciona, pero tenga en cuenta que Windows 10 agrega una barra antiestética en la parte superior de la ventana fuera del rectángulo del cliente que parece ser el área de captura / borde de cambio de tamaño para cambiar el tamaño de la ventana verticalmente ( parece que el borde superior se representa dentro del borde visible del formulario y los demás se representan fuera de o_O).
fusi
23

También agregue este fragmento de código a su formulario para permitir que aún se pueda arrastrar.

Simplemente agréguelo justo antes del constructor (el método que llama a InitializeComponent ()


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

Ese código es de: https://jachman.wordpress.com/2006/06/08/enhanced-drag-and-move-winforms-without-having-a-titlebar/

Ahora, para deshacerse de la barra de título pero aún tener un borde, combine el código de la otra respuesta:

this.ControlBox = falso;

this.Text = String.Empty;

con esta línea:

this.FormBorderStyle = FormBorderStyle.FixedSingle;


Coloque esas 3 líneas de código en el evento OnLoad del formulario y debería tener un buen formulario 'flotante' que se pueda arrastrar con un borde delgado (use FormBorderStyle.None si no desea ningún borde).

coding_is_fun
fuente
Esta opción hace que la ventana sea de tamaño considerable. Mucho mejor que establecer FormBorderStyle en None. Justo lo que quería.
Antonio Rodríguez
hola @ AntonioRodríguez, ¿cómo puedes cambiar el tamaño de este formulario? Tengo un formulario normal, y puse esto en el evento Load, mostró un borde de una sola línea + sin formulario de barra de título, pero no puedo cambiar el tamaño (estoy en Windows 10) this.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
haiduong87
11
 Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Joran Dob
fuente
10

Conjunto FormsBorderStyledel formulario a None.

Si lo hace, depende de usted cómo implementar la funcionalidad de arrastrar y cerrar de la ventana.

Maxim V. Pavlov
fuente
No hay forma de mantener una forma considerable sin bordes y no tener esa pequeña y molesta barra de título en la parte superior. Incluso usar Win32 directamente no lo eliminará. Si no tiene borde, debe implementar sus propios métodos para cerrar, maximizar, minimizar, que son bastante fáciles. Sin embargo, implementar un tamaño considerable es un verdadero dolor de cabeza para ser infalible. Lo intenté, pero finalmente me di por vencido, es mucho trabajo para no ganar mucho.
djack109
1

Estoy compartiendo mi código. 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;
       }
    }
    }

Ahora, el diseñador: -

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

la captura de pantalla: - NoBorderForm

Stephen Kennedy
fuente