Ich möchte WindowState=Normal
während Visible == false
setzen können, aber das Durchlaufen des Codes zeigt, dass es auf Maximized
zurückgesetzt wird, gleich nachdem Visibility = true
eingestellt wurde.So ändern Sie WindowState, wenn das Formular nicht sichtbar ist
Dies ist die kleinste Stichprobe, um das Verhalten zu reproduzieren. Die eigentliche Aufgabe besteht darin, auf eine Schaltfläche in einem maximierten Formular zu klicken und sie an einem anderen Ort und einer anderen Größe als RestoreBounds
wiederherzustellen, ohne zuerst die Größe zu ändern und dann die Größe zu ändern. Es ist visuell ablenkend. Natürlich funktioniert es gut, wenn die Sichtbarkeitsänderungen auskommentiert sind.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Visible = false;
this.WindowState = FormWindowState.Normal;
this.Visible = true;
}
}
- Run App
- Maximize Form
- Click-Taste
Die Form noch blinken, aber maximiert werden. Ich habe versucht, die Grenzen mit SetDesktopBounds
, Show
, Refresh
manuell einzustellen und sogar BeginInvoke
auf dem Aufruf sichtbar = wahr nur um sicherzustellen, dass die zugrunde liegende Nachricht Pumpe eine Chance zu verarbeiten bekommt.
Danke. Ich hatte beide zusammen vermisst. So nah und doch so fern. –
Das Testformular muss einfach schnell genug sein, damit es so aussieht, als würde es funktionieren. Wenn es in vollem Code implementiert ist, ist der Flash der vorherigen 'DesktopBounds' immer noch da. Beendet mit "Opazität" statt Sichtbarkeit und erreicht, was ich brauche. Vielen Dank für Ihre Zeit. –