Xóa thanh tiêu đề trong Windows Forms


82

Làm cách nào để xóa đường viền màu xanh lam ở trên cùng của Biểu mẫu cửa sổ? (Tôi không biết chính xác tên của nó.)


3
nó được gọi là TitleBar và bạn có thể ẩn nó khi thay đổi thuộc tính kiểu đường viền của biểu mẫu thành không có đường viền hoặc không có đường viền.
Davide Piras

Câu trả lời:


139

Bạn có thể đặt Thuộc tính FormBorderStylethành không trong trình thiết kế hoặc trong mã:

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

Rất tiếc, đã xảy ra sự cố trên Windows 10 (ít nhất là trên một số bản dựng) với FormBorderStyle.Noneviệc thay đổi kích thước biểu mẫu .
Rekshino

75

nếu ý của Blue Border thats on top of the Window Formbạn là thanh tiêu đề , hãy đặt thuộc tính Biểu mẫu ControlBoxthành falseText tính thành chuỗi trống ("").

đây là một đoạn mã:

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

8
Giải pháp của bạn có lợi thế hơn thiết lập phong cách biên giới để Không, bởi vì ... nó rời khỏi biên giới còn nguyên vẹn :) 1
Spook

Và bằng cách nào đó, nếu bạn làm điều đó thông qua FormBorderStyle.Nonenó sẽ không cho phép bạn vẽ trên biểu mẫu bằng cách nào đó (OnPaint đặt một hình ảnh trong hộp tranh đã được Dockđặt thành Fill), hoạt động tốt cho đến khi tôi thay đổi cài đặt đường viền FormBorderStyle.None, nhưng theo cách này, bản vẽ vẫn hoạt động đối với tôi :)
DrCopyPaste

@JohnNguyen không hoạt động? điều đó thật kỳ lạ, bạn có chắc là mình đã triển khai đúng không?
Nika G.

2
Giải pháp này có vẻ thực sự tệ trong Windows 10 - thanh tiêu đề "ẩn" không hoàn toàn biến mất - để lại một "vết sưng" trên đầu cửa sổ. Tôi cho rằng điều này là do viền cửa sổ mỏng của Windows 10. Tôi chưa tìm ra cách giải quyết vấn đề này. Có vẻ như tôi đang gặp khó khăn khi sử dụng tuyến FormBorderStyle.None .
Fool Running

1
đặt FormBorderStyle thành Sizable với gợi ý ở trên hoạt động, nhưng được cảnh báo rằng windows 10 thêm một thanh khó coi ở đầu cửa sổ bên ngoài hình chữ nhật máy khách, có vẻ như là vùng lấy / resize-border để thay đổi kích thước cửa sổ theo chiều dọc (nó dường như đường viền trên cùng được hiển thị bên trong đường viền biểu mẫu có thể nhìn thấy và các đường viền khác được hiển thị bên ngoài o_O).
fusi


23

Cũng thêm đoạn mã này vào biểu mẫu của bạn để cho phép nó vẫn có thể kéo được.

Chỉ cần thêm nó ngay trước hàm tạo (phương thức gọi 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;
}

Mã đó là từ: https://jachman.wordpress.com/2006/06/08/enhanced-drag-and-move-winforms-without-having-a-titlebar/

Bây giờ để thoát khỏi thanh tiêu đề nhưng vẫn có đường viền, hãy kết hợp mã từ phản hồi khác:

this.ControlBox = false;

this.Text = String.Empty;

với dòng này:

this.FormBorderStyle = FormBorderStyle.FixedSingle;


Đặt 3 dòng mã đó vào sự kiện OnLoad của biểu mẫu và bạn sẽ có một biểu mẫu 'nổi' đẹp có thể kéo với đường viền mỏng (sử dụng FormBorderStyle.None nếu bạn muốn không có đường viền).


Tùy chọn này làm cho cửa sổ có kích thước lớn. Tốt hơn nhiều so với việc đặt FormBorderStyle thành None. Chỉ những gì tôi muốn.
Antonio Rodríguez

xin chào @ AntonioRodríguez, làm cách nào để bạn có thể thay đổi kích thước biểu mẫu này? Tôi có một biểu mẫu bình thường và đặt nó trong sự kiện Load, nó hiển thị một đường viền đơn + không có biểu mẫu thanh tiêu đề, nhưng không thể thay đổi kích thước (tôi đang sử dụng windows 10) this.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
haiduong87


10

Tập hợp FormsBorderStylecủa Biểu mẫu thành None.

Nếu bạn làm vậy, tùy thuộc vào bạn làm thế nào để triển khai chức năng kéo và đóng của cửa sổ.


Không có cách nào để duy trì một hình thức khá lớn không có đường viền và không có thanh tiêu đề nhỏ khó chịu ở trên cùng. Ngay cả khi sử dụng trực tiếp Win32 cũng không loại bỏ được nó. Nếu bạn không có đường viền, bạn phải thực hiện các phương pháp của riêng mình để đóng, tối đa hóa, thu nhỏ là đủ dễ dàng. Tuy nhiên, việc thực hiện khá lớn là một nỗi đau đúng đắn cần phải hoàn thành. Tôi đã cố gắng nhưng cuối cùng đã bỏ cuộc, rất nhiều công sức mà chẳng thu được bao nhiêu.
djack109

1

Tôi đang chia sẻ mã của mình. 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;
       }
    }
    }

Bây giờ, nhà thiết kế: -

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

ảnh chụp màn hình: - NoBorderForm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.