Niestety nie jest to problem w systemie Windows 10 (przynajmniej na niektóre wersje) z FormBorderStyle.Nonew postaci zmiany rozmiaru .
Rekshino
75
jeśli Blue Border thats on top of the Window Formmasz na myśli pasek tytułu , ustaw ControlBoxwłaściwość Forms na falseiText właściwość na pusty ciąg („”).
Twoje rozwiązanie ma przewagę nad ustawieniem stylu obramowania na Brak, ponieważ ... pozostawia granicę nienaruszoną :) +1
Spook
I jakoś, jeśli zrobisz to przez FormBorderStyle.Noneto, uniemożliwi ci to w jakiś sposób rysowanie na formularzu (OnPaint ustawia obraz w pudełku graficznym, które ma Dockustawione na Fill), działało dobrze, dopóki nie zmieniłem ustawienia obramowania FormBorderStyle.None, ale w ten sposób rysowanie nadal działa dla ja :)
DrCopyPaste
@JohnNguyen nie działa? to dziwne, czy na pewno zaimplementowałeś to poprawnie?
Nika G.
3
To rozwiązanie wygląda naprawdę źle w systemie Windows 10 - „ukryty” pasek tytułu nie znika całkowicie - pozostawiając „wypukłość” w górnej części okna. Zakładam, że jest to spowodowane cienkimi krawędziami okien systemu Windows 10. Nie znalazłem sposobu na obejście tego. Wygląda na to, że utknąłem na trasie FormBorderStyle.None .
Fool Running
1
ustawienie FormBorderStyle na Sizable z powyższą sugestią działa, ale ostrzegamy, że Windows 10 dodaje brzydki pasek u góry okna poza prostokątem klienta, który wydaje się być obszarem chwytania / skalowaniem do zmiany rozmiaru okna w pionie (to wydaje się, że górna krawędź jest renderowana wewnątrz widocznej krawędzi formularza, a pozostałe są renderowane poza o_O).
Umieść te 3 linie kodu w zdarzeniu OnLoad formularza, a powinieneś mieć ładny, „pływający” formularz, który można przeciągać cienką ramką (użyj FormBorderStyle.None, jeśli nie chcesz obramowania).
Ta opcja umożliwia dostosowanie rozmiaru okna. Znacznie lepsze niż ustawienie FormBorderStyle na None. Właśnie tego chciałem.
Antonio Rodríguez
cześć @ AntonioRodríguez, jak możesz zmienić rozmiar tego formularza? Mam normalny formularz i umieściłem to w zdarzeniu Load, pokazało obramowanie pojedynczej linii + brak formularza paska tytułu, ale nie mogę zmienić rozmiaru (jestem w systemie Windows 10) this.ControlBox = false; this.Text = String.Empty; this.FormBorderStyle = FormBorderStyle.FixedSingle;
Nie ma sposobu, aby zachować spory format bez obramowania i nie mieć tego irytującego paska tytułu na górze. Nawet bezpośrednie użycie Win32 nie pozbędzie się go. Jeśli nie masz granicy, musisz wdrożyć własne metody zamknięcia, maksymalizacji, minimalizacji, które są dość łatwe. Wdrażanie znacznych rozmiarów jest jednak właściwym problemem, aby być niezawodnym. Próbowałem, ale w końcu się poddałem, to dużo pracy bez większego zysku.
djack109
1
Udostępniam swój kod. 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;
}
}
}
Teraz projektant: -
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;
}
}
Odpowiedzi:
Możesz ustawić Właściwość
FormBorderStyle
na none w projektancie lub w kodzie:this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
źródło
FormBorderStyle.None
w postaci zmiany rozmiaru .jeśli
Blue Border thats on top of the Window Form
masz na myśli pasek tytułu , ustawControlBox
właściwość Forms nafalse
iText
właściwość na pusty ciąg („”).oto fragment:
this.ControlBox = false; this.Text = String.Empty;
źródło
FormBorderStyle.None
to, uniemożliwi ci to w jakiś sposób rysowanie na formularzu (OnPaint ustawia obraz w pudełku graficznym, które maDock
ustawione naFill
), działało dobrze, dopóki nie zmieniłem ustawienia obramowaniaFormBorderStyle.None
, ale w ten sposób rysowanie nadal działa dla ja :)źródło
Dodaj również ten fragment kodu do formularza, aby nadal można było go przeciągać.
Po prostu dodaj go tuż przed konstruktorem (metoda, która wywołuje 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; }
Ten kod pochodzi z: https://jachman.wordpress.com/2006/06/08/enhanced-drag-and-move-winforms-without-having-a-titlebar/
Teraz, aby pozbyć się paska tytułu, ale nadal mieć obramowanie, połącz kod z innej odpowiedzi:
this.ControlBox = false;
this.Text = String.Empty;
z tą linią:
this.FormBorderStyle = FormBorderStyle.FixedSingle;
Umieść te 3 linie kodu w zdarzeniu OnLoad formularza, a powinieneś mieć ładny, „pływający” formularz, który można przeciągać cienką ramką (użyj FormBorderStyle.None, jeśli nie chcesz obramowania).
źródło
źródło
Zestaw
FormsBorderStyle
formularza doNone
.Jeśli tak, to od Ciebie zależy, jak zaimplementować funkcję przeciągania i zamykania okna.
źródło
Udostępniam swój kod. 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; } } }
Teraz projektant: -
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; } }
zrzut ekranu: - NoBorderForm
źródło