Windows Forms에서 제목 표시 줄 제거


82

Window Form 상단에있는 파란색 테두리를 제거하려면 어떻게해야합니까? (정확히 이름을 모르겠습니다.)


3
TitleBar라고하며 양식의 테두리 스타일 속성을 테두리 없음 또는 없음으로 변경하여 숨길 수 있습니다.
Davide Piras 2011 년

답변:


139

FormBorderStyle디자이너 또는 코드에서 속성 을 없음으로 설정할 수 있습니다 .

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

불행히도 Windows 10 (적어도 일부 빌드에서는)에 FormBorderStyle.Noneon form resize 문제가 있습니다.
Rekshino

75

제목 표시 줄Blue Border thats on top of the Window Form 을 의미하는 경우 Forms 속성을로 설정 하고 속성을 빈 문자열 ( "")로 설정합니다.ControlBoxfalseText

다음은 스 니펫입니다.

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

8
솔루션은 테두리 스타일을 없음으로 설정하는 것보다 이점이 있습니다. 테두리를 그대로 유지하기 때문입니다. :) +1
Spook

그리고를 통해 당신이 그것을 할 경우 어떻게 든, FormBorderStyle.None어떻게 든 양식에 그림에서 당신을 비활성화 (OnPaint를 그것 가지고있는 PictureBox에 이미지를 설정 Dock으로 설정 Fill나는 국경 설정을 변경할 때까지, 일 벌금) FormBorderStyle.None하지만,이 방법은, 그림은 여전히 작동 나 :)
DrCopyPaste 2014 년

@JohnNguyen이 작동하지 않습니까? 이상합니다. 올바르게 구현 했습니까?
Nika G.

2
이 솔루션은 Windows 10에서 정말 좋지 않은 것 같습니다. "숨겨진"제목 표시 줄이 완전히 사라지지 않고 창 상단에 "범프"가 남습니다. 나는 이것이 Windows 10 얇은 창 테두리로 인한 것이라고 가정합니다. 이 문제를 해결할 방법을 찾지 못했습니다. FormBorderStyle.None 경로를 계속 사용하는 것 같습니다 .
Fool Running

1
위의 제안으로 FormBorderStyle을 Sizable로 설정하면 작동하지만 Windows 10은 창을 세로로 크기를 조정하기 위해 잡기 영역 / 크기 조정 테두리로 보이는 클라이언트 사각형 외부의 창 상단에보기 흉한 막대를 추가합니다. 상단 테두리는 보이는 양식 테두리 내부에 렌더링되고 나머지 테두리는 o_O 외부에 렌더링됩니다.
fusi '1911.04.14


23

또한 양식에이 코드를 추가하여 여전히 드래그 할 수 있도록합니다.

생성자 (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;
}

해당 코드는 https://jachman.wordpress.com/2006/06/08/enhanced-drag-and-move-winforms-without-having-a-titlebar/입니다.

이제 제목 표시 줄을 제거하지만 여전히 테두리가 다른 응답의 코드를 결합합니다.

this.ControlBox = false;

this.Text = String.Empty;

이 줄 :

this.FormBorderStyle = FormBorderStyle.FixedSingle;


이 3 줄의 코드를 폼의 OnLoad 이벤트에 넣으면 얇은 테두리로 드래그 할 수있는 멋진 '부동'폼이 있어야합니다 (테두리가 필요하지 않으면 FormBorderStyle.None 사용).


이 옵션을 사용하면 창 크기를 조정할 수 있습니다. FormBorderStyle을 None으로 설정하는 것보다 훨씬 낫습니다. 내가 원했던 것.
Antonio Rodríguez 19

안녕하세요 @ AntonioRodríguez,이 양식의 크기를 어떻게 조정할 수 있습니까? 나는 정상적인 형태를 가지고 있고 이것을 Load 이벤트에 넣으면 한 줄 테두리 + 제목 표시 줄 양식이 표시되지 않았지만 크기를 조정할 수 없습니다 (Windows 10에 있음) this.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
haiduong87 19 dec


10

설정 FormsBorderStyle폼의 None.

그렇게 할 경우 창의 드래그 및 닫기 기능을 구현하는 방법은 사용자에게 달려 있습니다.


테두리없이 상당한 크기의 양식을 유지하고 상단에 약간의 제목 표시 줄을 표시 할 방법이 없습니다. Win32를 직접 사용해도 제거되지는 않습니다. 테두리가없는 경우 닫기, 최대화, 최소화를위한 자체 메서드를 구현해야합니다. 하지만 상당한 규모를 구현하는 것은 완벽하게 대처하기위한 올바른 고통입니다. 나는 노력했지만 결국 포기했고 많은 이익을 위해 많은 일을했습니다.
djack109

1

내 코드를 공유하고 있습니다. 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;
       }
    }
    }

이제 디자이너 :-

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

스크린 샷 : -NoBorderForm

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.