更改MaximizedBounds时,Form表示奇怪

时间:2016-02-04 05:51:15

标签: c# winforms

我正在使用一个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);
    }
}

}

1 个答案:

答案 0 :(得分:0)

您已将UI线程设置为休眠10秒,因此每次调整表单大小时,它都会在重绘之前暂停。为什么要将UI线程设置为睡眠状态?在我看来,这是你问题的原因。