Windowsフォームのタイトルバーを削除します


82

ウィンドウフォームの上にある青い境界線を削除するにはどうすればよいですか?(名前は正確にはわかりません。)


3
これはTitleBarと呼ばれ、フォームの境界線スタイルプロパティを境界線なしまたはなしに変更して非表示にすることができます。
Davide Piras 2011

回答:



75

たかのBlue Border thats on top of the Window Formあなたの平均タイトルバー、セットフォームControlBoxにプロパティfalseおよびTextプロパティは空の文字列(「」)へ。

スニペットは次のとおりです。

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

8
あなたのソリューションには、境界線のスタイルを[なし]に設定するよりも利点があります。なぜなら...境界線はそのまま残るからです:) +1
2013

そして、どういうわけか、それを介しFormBorderStyle.Noneてそれを行うと、フォームに描画できなくなり(OnPaintはに設定されている画像ボックスに画像をDock設定しますFill)、境界線の設定をFormBorderStyle.Noneで変更するまでは正常に機能しましたが、この方法では、描画は引き続き機能します私:)
DrCopyPaste 2014年

@JohnNguyenが機能していませんか?それは奇妙です、あなたはそれを正しく実装したと確信していますか?
Nika G.

2
この解決策は、Windows 10では非常に見栄えが悪いようです。「非表示」のタイトルバーは完全には消えませんが、ウィンドウの上部に「バンプ」が残ります。これは、Windows10の薄いウィンドウの境界線が原因であると思います。私はこれを回避する方法を見つけていません。FormBorderStyle.Noneルートに行き詰まっているようです。
愚か者

1
上記の提案でFormBorderStyleをSizableに設定することは機能しますが、ウィンドウ10は、ウィンドウを垂直方向にサイズ変更するためのグラブエリア/サイズ変更境界のように見えるクライアント長方形の外側のウィンドウの上部に見苦しいバーを追加することに注意してください(上部の境界線は表示されているフォームの境界線の内側にレンダリングされ、その他はo_Oの外側にレンダリングされているようです)。
FUSI


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に設定するよりもはるかに優れています。まさに私が欲しかったもの。
アントニオロドリゲス

こんにちは@AntonioRodríguez、このフォームのサイズを変更するにはどうすればよいですか?私は通常のフォームを持っており、これをLoadイベントに入れると、1行の境界線+タイトルバーフォームが表示されませんが、サイズを変更できません(Windows 10を使用しています)this.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
haiduong 8719


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.