2011-01-21 48 views
2

我有代碼在關閉時保持表單大小和位置,並在加載表單時定位和調整表單的大小。支持雙顯示器的表單位置和大小

我想要考慮到在加載時,持久位置可能超出屏幕邊界。易於在單個顯示器設置中進行測試,但對於多個顯示器,我該如何測試。我不知道屏幕是水平還是垂直設置等等。不知怎的,我需要確定所有屏幕的組合區域,並確定表單是否存在位置在該區域內。

+0

[C#:如何使窗體記住它的界限和WindowState(考慮雙顯示器設置)](http://stackoverflow.com/questions/495380/c-how-to-make-a -form-remember-its-bounds-and-windowstate-taking-dual-monitor-s) – Jeremy 2011-01-21 16:57:44

回答

1

看看一雙好的功能,使用記憶和恢復窗口狀態是GetWindowPlacementSetWindowPlacementGetWindowPlacement不僅檢索正常窗口的當前狀態和位置,而且還檢索最大化窗口的最大化之前的位置。

你的目的,SetWindowPlacement是有用的,因爲知道要微調窗口到最近的屏幕,如果它要求恢復其關閉屏幕:

如果WINDOWPLACEMENT指定的信息將導致一個窗口,是完全關閉屏幕,系統會自動調整座標,以便窗口可見,同時考慮到屏幕分辨率和多顯示器配置的變化。

不幸的是,我不知道這兩個函數的現成的.NET等價物,儘管它們可以直接通過P/Invoke調用(參見http://pinvoke.net)。