Windows Forms'ta başlık çubuğunu kaldırın


82

Pencere Formunun üstündeki mavi sınırı nasıl kaldırabilirim? (Tam olarak adını bilmiyorum.)


3
adı TitleBar'dır ve formun border style özelliğini kenarlıksız veya hiçbiri olarak değiştirerek muhtemelen gizleyebilirsiniz.
Davide Piras

Yanıtlar:


140

Özelliği FormBorderStyletasarımcıda veya kodda yok olarak ayarlayabilirsiniz :

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

Maalesef Windows 10 sorunun (bazı en azından inşa) bulunmaktadır FormBorderStyle.Noneüzerine formunda yeniden boyutlandırma .
Rekshino

75

tarafından eğer Blue Border thats on top of the Window Formsizin ortalama başlık çubuğu , set Formlar ControlBoxmülkiyet için falseve Textmülkiyet boş dize ( "") için.

işte bir pasaj:

this.ControlBox = false;
this.Text = String.Empty;

8
Çözümünüzün kenarlık stilini Yok olarak ayarlamaya göre avantajı var, çünkü ... sınırı olduğu gibi bırakıyor :) +1
Spook

Ve bir şekilde, eğer bunu aracılığıyla FormBorderStyle.Noneyaparsanız, bir şekilde form üzerinde çizim yapmanızı engelliyor (OnPaint, Dockayarlı bir resim kutusunda bir resim ayarlıyor Fill), kenar ayarını ile değiştirene kadar iyi çalıştı FormBorderStyle.None, ancak bu şekilde çizim hala işe yarıyor ben :)
DrCopyPaste

@JohnNguyen çalışmıyor mu? bu garip, doğru uyguladığınızdan emin misiniz?
Nika G.

3
Bu çözüm Windows 10'da gerçekten kötü görünüyor - "gizli" başlık çubuğu tamamen kaybolmuyor - pencerenin üstünde bir "çıkıntı" bırakıyor. Bunun Windows 10 ince pencere kenarlıklarından kaynaklandığını varsayıyorum. Bunu aşmanın bir yolunu bulamadım. Görünüşe göre FormBorderStyle.None rotasına giderken takılıp kaldım .
Fool Running

1
Yukarıdaki öneri ile FormBorderStyle'ı Sizable olarak ayarlamak işe yarıyor, ancak Windows 10'un, pencereyi dikey olarak yeniden boyutlandırmak için yakalama alanı / yeniden boyutlandırma sınırı gibi görünen istemci dikdörtgeninin dışında pencerenin üst kısmına çirkin bir çubuk eklediği konusunda uyarıda bulunun ( üst kenarlık görünür form sınırının içinde ve diğerleri o_O dışında oluşturulmuş gibi görünüyor.
fusi


23

Ayrıca, hala sürüklenebilir olmasına izin vermek için bu kod parçasını formunuza ekleyin.

Yapıcıdan hemen önce ekleyin (InitializeComponent () öğesini çağıran yöntem


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

Bu kod şunlardan geliyor: https://jachman.wordpress.com/2006/06/08/enhanced-drag-and-move-winforms-without-having-a-titlebar/

Şimdi başlık çubuğundan kurtulmak, ancak yine de bir kenarlığa sahip olmak için diğer yanıttaki kodu birleştirin:

this.ControlBox = false;

this.Text = String.Empty;

bu satırla:

this.FormBorderStyle = FormBorderStyle.FixedSingle;


Bu 3 satırlık kodu formun OnLoad olayına yerleştirin ve ince bir kenarlıkla sürüklenebilen güzel bir 'kayan' forma sahip olmalısınız (kenarlık istemiyorsanız FormBorderStyle.None kullanın).


Bu seçenek, pencereyi büyük yapar. FormBorderStyle'ı Yok olarak ayarlamaktan çok daha iyi. Tam istediğim gibi.
Antonio Rodríguez

merhaba @ AntonioRod Rodríguez, bu formu nasıl yeniden boyutlandırabilirsiniz? Normal bir formum var ve bunu Load olayına koydum, tek satırlık bir kenarlık + başlık çubuğu formu göstermedi, ancak yeniden boyutlandıramıyorum (Windows 10'dayım) this.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
haiduong87

11
 Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None

10

FormsBorderStyleFormun ayarlayın None.

Bunu yaparsanız, pencerenin sürükleme ve kapatma işlevini nasıl uygulayacağınız size kalmıştır.


Kenarlığı olmayan oldukça büyük bir formu korumanın ve üstte o sinir bozucu küçük başlık çubuğuna sahip olmamanın bir yolu yoktur. Win32'yi doğrudan kullanmak bile ondan kurtulmaz. Sınırınız yoksa, kapatmak, maksimize etmek, küçültmek için kendi yöntemlerinizi uygulamanız gerekir, hangileri yeterince kolaydır. Büyük ölçüde uygulama yapmak, kusursuz olmak için doğru bir acıdır. Denedim ama sonunda pes ettim, çok fazla kazanç için değil.
djack109

1

Kodumu paylaşıyorum. 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;
       }
    }
    }

Şimdi, tasarımcı: -

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

ekran görüntüsü: - NoBorderForm

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.