2010-09-06 21 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

相關問題