Leider gibt es unter Windows 10 (zumindest bei einigen Builds) ein Problem mit der GrößenänderungFormBorderStyle.None von Formularen .
Rekshino
75
Wenn Blue Border thats on top of the Window FormSie damit Titelleiste meinen , setzen Sie die Forms- ControlBoxEigenschaft auf falseund die TextEigenschaft auf leere Zeichenfolge ("").
Ihre Lösung hat den Vorteil, dass Sie den Rahmenstil auf Keine setzen, weil ... der Rand intakt bleibt :) +1
Spook
Und irgendwie, wenn Sie es über FormBorderStyle.Nonees tun, können Sie nicht mehr auf dem Formular zeichnen (OnPaint legt ein Bild in einer Bildbox fest, auf die es Dockeingestellt ist Fill), hat einwandfrei funktioniert, bis ich die Rahmeneinstellung mit geändert habe FormBorderStyle.None, aber auf diese Weise funktioniert das Zeichnen immer noch für ich :)
DrCopyPaste
@ JohnNguyen funktioniert nicht? das ist seltsam, bist du sicher, dass du es richtig implementiert hast?
Nika G.
2
Diese Lösung scheint in Windows 10 wirklich schlecht auszusehen - die "versteckte" Titelleiste verschwindet nicht vollständig - und hinterlässt oben im Fenster eine "Beule". Ich gehe davon aus, dass dies durch die dünnen Fensterränder von Windows 10 verursacht wird. Ich habe keinen Weg gefunden, dies zu umgehen. Sieht so aus, als würde ich den FormBorderStyle.None- Weg gehen.
Fool Running
1
Das Setzen des FormBorderStyle auf Sizable mit dem obigen Vorschlag funktioniert, aber seien Sie gewarnt, dass Windows 10 eine unansehnliche Leiste am oberen Rand des Fensters außerhalb des Client-Rechtecks hinzufügt, die als Greifbereich / Größenänderungsrand für die vertikale Größenänderung des Fensters erscheint (es Anscheinend wird der obere Rand innerhalb des sichtbaren Formularrahmens und die anderen außerhalb von o_O) gerendert.
Fügen Sie diese 3 Codezeilen in das OnLoad-Ereignis des Formulars ein, und Sie sollten ein schönes "schwebendes" Formular haben, das mit einem dünnen Rand gezogen werden kann (verwenden Sie FormBorderStyle.None, wenn Sie keinen Rand möchten).
Diese Option vergrößert das Fenster. Viel besser als FormBorderStyle auf None zu setzen. Genau das, was ich wollte.
Antonio Rodríguez
hi @ AntonioRodríguez, wie kannst du die Größe dieses Formulars ändern? Ich habe ein normales Formular und habe es in das Load-Ereignis eingefügt. Es zeigt einen einzeiligen Rand + kein Titelleistenformular, kann jedoch die Größe nicht ändern (ich bin unter Windows 10). This.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
Es gibt keine Möglichkeit, eine große Form ohne Rand beizubehalten und das nervige kleine Stück Titelleiste oben nicht zu haben. Selbst wenn Sie Win32 direkt verwenden, wird es nicht entfernt. Wenn Sie keinen Rand haben, müssen Sie Ihre eigenen Methoden zum Schließen, Maximieren und Minimieren implementieren, die einfach genug sind. Die Implementierung einer beträchtlichen Größe ist jedoch ein richtiger Schmerz, um kinderleicht zu sein. Ich habe es versucht, aber schließlich aufgegeben, es ist viel Arbeit für nicht viel Gewinn.
djack109
1
Ich teile meinen Code. 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;
namespaceBorderExp
{
publicpartialclassForm1 : Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidForm1_Load(object sender, EventArgs e)
{
FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
}
privatevoidExitClick(object sender, EventArgs e)
{
Application.Exit();
}
privatevoidMaxClick(object sender, EventArgs e)
{
if (WindowState ==FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
}
else
{
this.WindowState = FormWindowState.Normal;
}
}
privatevoidMinClick(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
}
}
Nun der Designer: -
namespaceBorderExp
{
partialclassForm1
{
///<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>protectedoverridevoidDispose(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>privatevoidInitializeComponent()
{
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);
}
#endregionprivate System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
}
}
Antworten:
Sie können die Eigenschaft
FormBorderStyle
im Designer oder im Code auf none setzen:this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
quelle
FormBorderStyle.None
von Formularen .Wenn
Blue Border thats on top of the Window Form
Sie damit Titelleiste meinen , setzen Sie die Forms-ControlBox
Eigenschaft auffalse
und dieText
Eigenschaft auf leere Zeichenfolge ("").Hier ist ein Ausschnitt:
this.ControlBox = false; this.Text = String.Empty;
quelle
FormBorderStyle.None
es tun, können Sie nicht mehr auf dem Formular zeichnen (OnPaint legt ein Bild in einer Bildbox fest, auf die esDock
eingestellt istFill
), hat einwandfrei funktioniert, bis ich die Rahmeneinstellung mit geändert habeFormBorderStyle.None
, aber auf diese Weise funktioniert das Zeichnen immer noch für ich :)quelle
Fügen Sie dieses Formular auch zu Ihrem Formular hinzu, damit es noch ziehbar ist.
Fügen Sie es einfach direkt vor dem Konstruktor hinzu (die Methode, die InitializeComponent () aufruft.
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; }
Dieser Code stammt von: https://jachman.wordpress.com/2006/06/08/enhanced-drag-and-move-winforms-without-having-a-titlebar/
Um nun die Titelleiste zu entfernen und dennoch einen Rand zu haben, kombinieren Sie den Code aus der anderen Antwort:
this.ControlBox = false;
this.Text = String.Empty;
mit dieser Zeile:
this.FormBorderStyle = FormBorderStyle.FixedSingle;
Fügen Sie diese 3 Codezeilen in das OnLoad-Ereignis des Formulars ein, und Sie sollten ein schönes "schwebendes" Formular haben, das mit einem dünnen Rand gezogen werden kann (verwenden Sie FormBorderStyle.None, wenn Sie keinen Rand möchten).
quelle
quelle
Satz
FormsBorderStyle
des Formulars aufNone
.Wenn Sie dies tun, liegt es an Ihnen, wie Sie die Zieh- und Schließfunktion des Fensters implementieren.
quelle
Ich teile meinen Code. 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; } } }
Nun der Designer: -
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; } }
der Screenshot: - NoBorderForm
quelle