К сожалению , существует проблема в Windows 10 (по крайней мере , на некоторых сборках) с FormBorderStyle.Noneпо форме изменения размера .
Рекшино
75
если Blue Border thats on top of the Window Formвы имеете в виду заголовок , установите для ControlBoxсвойства Forms значение falseиText строку свойства - пустую строку ("").
Ваше решение имеет преимущество перед установкой стиля границы на None, потому что ... оно оставляет границу нетронутой :) +1
Spook
И каким-то образом, если вы сделаете это через FormBorderStyle.Noneнего, вы каким-то образом не сможете рисовать в форме (OnPaint устанавливает изображение в графическом блоке, для которого Dockустановлено значение Fill), все работало нормально, пока я не изменил настройку границы FormBorderStyle.None, но в этом случае рисование все еще работает для я :)
DrCopyPaste
@JohnNguyen не работает? это странно, вы уверены, что правильно это реализовали?
Ника Г.
3
Это решение выглядит очень плохо в Windows 10 - «скрытая» строка заголовка не исчезает полностью - остается «выпуклость» в верхней части окна. Я предполагаю, что это вызвано тонкими границами окна Windows 10. Я не нашел способа обойти это. Похоже, я застрял на маршруте FormBorderStyle.None .
Fool Running
1
установка FormBorderStyle на Sizable с помощью приведенного выше предложения работает, но имейте в виду, что Windows 10 добавляет неприглядную полосу в верхней части окна за пределами клиентского прямоугольника, который выглядит как область захвата / изменение размера для изменения размера окна по вертикали (это кажется, что верхняя граница отображается внутри видимой границы формы, а остальные отображаются за пределами o_O).
Поместите эти 3 строки кода в событие формы OnLoad, и у вас должна получиться красивая «плавающая» форма, которую можно перетаскивать с тонкой рамкой (используйте FormBorderStyle.None, если вы не хотите, чтобы граница была).
Эта опция делает окно большим. Намного лучше, чем установить для FormBorderStyle значение None. Как раз то, что я хотел.
Антонио Родригес
привет @ AntonioRodríguez, как изменить размер этой формы? У меня обычная форма, и я поместил это в событие Load, он показал однострочную границу + без формы заголовка, но не могу изменить размер (я использую Windows 10) this.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
Невозможно сохранить крупную форму без рамки и не иметь этого раздражающего кусочка строки заголовка вверху. Даже использование 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;
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;
}
}
}
Теперь дизайнер: -
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;
}
}
Ответы:
Вы можете установить для свойства
FormBorderStyle
значение none в дизайнере или в коде:this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
источник
FormBorderStyle.None
по форме изменения размера .если
Blue Border thats on top of the Window Form
вы имеете в виду заголовок , установите дляControlBox
свойства Forms значениеfalse
иText
строку свойства - пустую строку ("").вот отрывок:
this.ControlBox = false; this.Text = String.Empty;
источник
FormBorderStyle.None
него, вы каким-то образом не сможете рисовать в форме (OnPaint устанавливает изображение в графическом блоке, для которогоDock
установлено значениеFill
), все работало нормально, пока я не изменил настройку границыFormBorderStyle.None
, но в этом случае рисование все еще работает для я :)источник
Также добавьте этот фрагмент кода в вашу форму, чтобы ее можно было перетаскивать.
Просто добавьте его прямо перед конструктором (метод, вызывающий 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, если вы не хотите, чтобы граница была).
источник
источник
Набор
FormsBorderStyle
Формы вNone
.Если вы это сделаете, вам решать, как реализовать функцию перетаскивания и закрытия окна.
источник
Я делюсь своим кодом. 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
источник