I\'ve attached a small example about the issue. How can I hide the control box completely during Maximize and Minimize the Borderless Form
using System.Windows.F
I can confirm the issue. When restoring a border-less Form
from minimized state, a ghost of a title-bar shows at top-left of the window for a very short time.
Reproducing the issue
To reproduce the problem, it's enough to create a border-less form by setting FormBorderStyle
property to None
and then minimize and restore it in a timer. Start the program by showing the form and look at top-left of the window, after restore.
using System;
using System.Windows.Forms;
class Form1 : Form
{
public Form1()
{
var timer = new Timer() { Interval = 1000 };
this.Text = "Some Text";
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
timer.Tick += (x, y) =>
{
if (this.WindowState != FormWindowState.Minimized)
this.WindowState = FormWindowState.Minimized;
else
this.WindowState = FormWindowState.Normal;
};
timer.Start();
}
}
Workaround
Here is the workaround which I used to remove that flicker. It's enough to add the event handler to above Form1
class and register it for Activated
event this.Activated += Form1_Activated;
.
private void Form1_Activated(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
this.Hide();
this.BeginInvoke(new Action(() =>
{
if (this.WindowState != FormWindowState.Minimized && !Visible)
this.Show();
}));
}