我正在使用一个Windows窗体,它在最大化时具有指定的位置和大小 我的问题是,当窗体最大化时,窗体移动到桌面的左上角并返回到指定位置...有时,在左上区域留下空白背景。
这就是我可以重现问题的方法......
1)创建一个名为“MaximizingTest”的新“Windows Forms Application”项目
2)添加“this.MaximizedBounds = new Rectangle(100,100,200,200);”在“InitializeComponent()”下
3)添加SizeChanged事件。
4)添加“System.Threading.Thread.Sleep(10000);”
5)按“F5”运行应用程序
6)单击表单的最大化按钮,然后快速单击表单外部的某个位置以失去焦点
7)使用指定位置(100,100)和大小(200,200)重新绘制表格
8)几秒钟后,表格移动到桌面的左上角
9)再过几秒后,表格再次返回指定位置。
我想知道为什么在UI线程忙(睡觉)时表单移动到左上角。
提前致谢!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MaximizingTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.MaximizedBounds = new Rectangle(100, 100, 200, 200);
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(10000);
}
}
}
答案 0 :(得分:0)
您已将UI线程设置为休眠10秒,因此每次调整表单大小时,它都会在重绘之前暂停。为什么要将UI线程设置为睡眠状态?在我看来,这是你问题的原因。