2010-09-06 66 views
4

我在这里用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中得到了修复,也许这是一个驱动程序问题......我想我们现在永远都不会这样,但似乎没有什么用处来保留这个问题,我会标记它关闭。 谢谢给所有谁把他们的一些宝贵的时间,但!

+0

您是否正在对表单的大小/位置或包含的控件进行任何计算?主窗口左侧的屏幕将具有负坐标,并且很容易假设它们在计算中始终为非负值。 – Richard 2010-09-06 17:39:37

+0

不在我原来的代码中,也不在'再现例子'中。但我同意这可能是导致这种情况的“本地”对象内部的一些行。我希望其他人也能够重现它,或者实际上不会,在向MS发送错误报告之前,这两者都会很有趣。 – deroby 2010-09-06 17:47:25

+0

如果你可以重新创建这个只有标准控件,并没有代码来操纵大小/位置,那么我会建议打开一个错误http://connect.microsoft.com/ – Richard 2010-09-07 08:32:27

回答

0

似乎这个问题是硬件/驱动程序/特定版本的.NET /?有关。结束这样的问题。

0

如果您无法使用StatusStrip调整窗体大小,那么这里还有另一个问题。除非将FormBorderStyle属性设置为固定样式,否则所有表单都应调整大小。

+0

FormBordeStyle设置为SizeAble。坦率地说,我没有触及除名称,文本和AutoSizeMode之外的任何属性。 – deroby 2010-09-06 17:31:44

+0

将下面的代码复选框落后使得它非常清楚,问题围绕AutoSizeMode财产围绕 私人无效chkAutoGrowAndShrink_CheckedChanged(对象发件人,EventArgs的) { \t this.AutoSizeMode = chkAutoGrowAndShrink.Checked? AutoSizeMode.GrowAndShrink:System.Windows.Forms.AutoSizeMode.GrowOnly; } //对于缺少布局感到抱歉,似乎评论框吃掉了大部分... – deroby 2010-09-06 17:32:25

+0

嗯...非常混乱。 – davisoa 2010-09-06 17:55:17