【发布时间】:2016-02-04 05:51:14
【问题描述】:
我正在使用最大化时具有指定位置和大小的 Windows 窗体。
我的问题是,当表单最大化时,表单会移动到桌面的左上角并返回到指定的位置……有时,左上角区域会留下空白背景。
这就是我可以重现问题的方法......
1) 创建一个名为“MaximizingTest”的新“Windows 窗体应用程序”项目。
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);
}
}
}
【问题讨论】:
-
表单上有多少个子控件?您发布的代码不会重现表单自行移动到角落然后回到 100,100 位置的问题。你还有其他我们看不到的事情发生。
-
感谢 Lars Tech!此问题发生在“InitializeComponent();”下的“MaximizedBounds”行的普通 Windows 窗体项目上和“Form1_SizeChanged(...)”事件。我又试了一次,发现当单击 MaximizeButton 后表单失焦时,往往会发生问题……对于缺少信息,我感到非常抱歉。所以请尝试失去焦点。
-
如果您在单击表单时如何失去焦点?有很多你没有告诉我们。尝试创建一个新项目并复制问题,然后发布该代码。
-
嗨,Lars Tech!我刚刚编辑了这个问题,这个问题在我的环境中是如何发生的。我也在另一台机器上试过,也遇到了同样的问题。谢谢!