我在这里用c#编写的Windows应用程序遇到了最奇怪的问题。Windows窗体在左辅助显示器上不能调整大小
虽然没有什么特别的地方,但当主显示器被配置为站在主显示器的右侧时,主显示器和任何辅助显示器上的主窗口都能很好地工作。但是,当我重新配置辅助屏幕放置在我的主监视器的左侧侧时,我(和其他人)不再可以更改表单的大小。鼠标指针不会变成'NW-SE-arrows',也不会拖动边缘对窗口大小做出任何改变。
做一些额外的实验这似乎只有当我有AutoSizeMode的形式设置为GrowAndShrink!时才表面?
这是一种错误还是我误解了属性?
要重现这个问题,你应该
- 开始一个新的WinForms项目
- 添加StatusStrip中的形式
- 运行项目(调试/在我的情况下,任何CPU) 底部
- 将窗体拖动到显示器的左侧,显示器显示为:
PS:看起来,当我删除StatusStrip,我无法调整窗体的大小,所以我猜这是StatusStrip对象中的一些副作用/错误...
添加一个复选框,后面的代码使得它非常清楚:问题围绕着AutoSizeMode财产
private void chkAutoGrowAndShrink_CheckedChanged(object sender, EventArgs e)
{
this.AutoSizeMode = chkAutoGrowAndShrink.Checked ?
AutoSizeMode.GrowAndShrink :
System.Windows.Forms.AutoSizeMode.GrowOnly;
}
UPDATE:
正如我最近更换机器,我使用VS2010现在重做这个新的笔记本电脑的测试和保持&不料,问题不再。我仍然不确定这是从哪里来的,也许它随着时间的推移在.NET中得到了修复,也许这是一个驱动程序问题......我想我们现在永远都不会这样,但似乎没有什么用处来保留这个问题,我会标记它关闭。 谢谢给所有谁把他们的一些宝贵的时间,但!
您是否正在对表单的大小/位置或包含的控件进行任何计算?主窗口左侧的屏幕将具有负坐标,并且很容易假设它们在计算中始终为非负值。 – Richard 2010-09-06 17:39:37
不在我原来的代码中,也不在'再现例子'中。但我同意这可能是导致这种情况的“本地”对象内部的一些行。我希望其他人也能够重现它,或者实际上不会,在向MS发送错误报告之前,这两者都会很有趣。 – deroby 2010-09-06 17:47:25
如果你可以重新创建这个只有标准控件,并没有代码来操纵大小/位置,那么我会建议打开一个错误http://connect.microsoft.com/ – Richard 2010-09-07 08:32:27