2015-07-03 31 views
0

我正在開發一個小應用程序Winforms使用C#。用戶可以創建應用程序的多個實例並將它們放置在屏幕上。當應用程序關閉時,應用程序會記住每個打開的窗口的位置(存儲在XML文件中)。在應用程序重新啓動時,它將查看XML文件並嘗試重新打開它們。 問題是,如果用戶在兩臺屏幕計算機(在第二臺顯示器中)中放置一個窗口,然後在另一臺帶有1個屏幕的計算機上運行該應用程序,則由於座標不存在,窗口將不會顯示在屏幕上。值得一提的是,在一臺單電腦中,我可以看到窗口在那裏(它在任務欄中)。有沒有辦法計算窗口的新位置?要麼?Winforms:從具有兩個/多個屏幕的計算機恢復表單位置到一個屏幕的計算機

+0

看看Screen類。 – SLaks

+0

@SLaks謝謝我試試:) – arvind

+0

@SLaks非常感謝,屏幕clas做到了這一招:) – arvind

回答

0

使用System.Windows.Forms中的Screen類檢查屏幕的編號。 AllScreens包含系統當前所有屏幕的列表。如果您保存的位置不再適用於此佈局,則應該將位置重置爲默認位置。

+0

非常感謝您的回答。這正是我所做的:) – arvind

0

正如評論中提到的@SLaks scrren類幫助我實現了我所需要的。通過簡單地獲取屏幕的邊界並與存儲的座標進行比較,我就可以解決問題:

mainWindow.Location = (Screen.AllScreens.Length == 1 && savedWindow.Location.X > Screen.AllScreens[0].Bounds.Width) ? new System.Drawing.Point(0, 0) : savedWindow.Location;