如何編程一個dotNet Windows(或WPF)應用程序以便讓其在輔助顯示器上全屏顯示?在輔助顯示器上全屏顯示
回答
的代碼在那裏的工作,但默認爲您的主顯示器。要改變這種情況,您需要將調用GetSystemMetrics將調用GetMonitorInfo。使用GetMonitorInfo,你可以得到適當的RECT傳遞給SetWindowPos。
GetMonitorInfo允許您獲取任何顯示器的RECT。
有一個MSDN Article on Position Apps in Multi-Monitor Setups,這可能有助於解釋一些更好的東西。
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
this.Bounds = GetSecondaryScreen().Bounds;
}
private Screen GetSecondaryScreen()
{
foreach (Screen screen in Screen.AllScreens)
{
if (screen != Screen.PrimaryScreen)
return screen;
}
return Screen.PrimaryScreen;
}
這不是從你的問題清楚,如果你正在尋找一種方式將窗口移動到輔助監視器,然後去全屏,或者如果你只是希望支持全屏模式無論顯示器的窗口上(可能是主要的或次要的)。
如果以後,對於WPF窗口,雖然與全屏模式不太一樣,但可以在最大化時刪除邊框,並在未最大化時恢復邊框。不需要檢查哪個監視器等。標題/標題欄的顯示由邊界狀態控制。
protected override void OnStateChanged(EventArgs e)
{
if (WindowState == WindowState.Maximized)
{
if (WindowStyle.None != WindowStyle)
WindowStyle = WindowStyle.None;
}
else if (WindowStyle != WindowStyle.SingleBorderWindow)
WindowStyle = WindowStyle.SingleBorderWindow;
base.OnStateChanged(e);
}
幸得帕維爾在當前問題他基於窗體的答案,並以尼爾,他在this question答案。
對於WPF應用程序,請看this post。最終取決於WindowState何時被設置爲最大化。如果您將其設置在XAML或窗口構造函數中(即在窗口加載之前),它將始終在主顯示屏上最大化。另一方面,如果您在加載窗口時將WindowState設置爲Maximized,它將在之前最大化的屏幕上最大化。
**謝謝!**幫助將窗口類構造函數的恢復位置代碼移動到_Loaded_處理程序。我唯一應該補充的是,Window類在發送_Loaded_通知之前使用默認設置發送_LocationChanged_通知,所以您應該跳過_LocationChanged_通知,直到您還原_Loaded_處理程序中的窗口位置。 – Mar 2015-07-02 05:52:33
在WPF中:將WindowState屬性設置爲普通(非最大),並創建加載的事件。在這種情況下編寫代碼:
this.Left = SystemParameters.PrimaryScreenWidth + 100;
this.WindowState = System.Windows.WindowState.Maximized;
假設輔助監視器位於主監視器的右側。 – Paul 2012-02-14 14:13:56
最大化窗口到輔助監視器(如果有的話)的擴展方法。 不假定輔助監視器是System.Windows.Forms.Screen.AllScreens [2];
using System.Linq;
using System.Windows;
namespace ExtendedControls
{
static public class WindowExt
{
// NB : Best to call this function from the windows Loaded event or after showing the window
// (otherwise window is just positioned to fill the secondary monitor rather than being maximised).
public static void MaximizeToSecondaryMonitor(this Window window)
{
var secondaryScreen = System.Windows.Forms.Screen.AllScreens.Where(s => !s.Primary).FirstOrDefault();
if (secondaryScreen != null)
{
if (!window.IsLoaded)
window.WindowStartupLocation = WindowStartupLocation.Manual;
var workingArea = secondaryScreen.WorkingArea;
window.Left = workingArea.Left;
window.Top = workingArea.Top;
window.Width = workingArea.Width;
window.Height = workingArea.Height;
// If window isn't loaded then maxmizing will result in the window displaying on the primary monitor
if (window.IsLoaded)
window.WindowState = WindowState.Maximized;
}
}
}
}
工作就像一個魅力... – kennyzx 2012-07-17 06:20:06
我注意到主張設定Loaded事件的位置的答案,但是這會導致閃爍時首先顯示正常的窗口然後最大化。如果您訂閱SourceInitialized事件在構造函數,並設置在那裏它會處理最大化到二次監視無閃爍的位置 - 我在這裏假設WPF
public MyWindow()
{
SourceInitialized += MyWindow_SourceInitialized;
}
void MyWindow_SourceInitialized(object sender, EventArgs e)
{
Left = 100;
Top = 50;
Width = 800;
Height = 600;
WindowState = WindowState.Maximized;
}
任何替代COORDS您的輔助監視器
- 1. 使用Cocoa在輔助顯示器上顯示os x窗口全屏
- 2. 使用Qt的輔助顯示器顯示窗口全屏使用Qt
- 3. C#Winform應用程序僅在輔助顯示器上顯示
- 4. 如何在C#中的輔助監視器上全屏顯示TIF圖像?
- 5. 始終在輔助顯示器和全屏模式下啓動Flash播放器
- 6. 在輔助顯示器上使用javascript檢測顯示器解析度
- 7. WM_NCHITTEST和主顯示器左邊的輔助顯示器
- 8. 使用XNA在多個顯示器上全屏顯示
- 9. 在iOS的外部顯示器上顯示全屏
- 10. 顯示值從HTML輔助
- 11. 如何使用tkinter在輔助顯示器中製作全屏窗口?
- 12. 如何在PyQT的輔助顯示器上顯示一個窗口?
- 13. Xlib全屏多顯示器
- 14. 雙顯示器全屏Swift
- 15. 使用powershell將全屏應用程序/遊戲移動到輔助顯示器
- 16. 如何在輔助監視器上顯示錶單?
- 17. 在輔助顯示器上啓動Android-O
- 18. 顯示縮進輔助線在Xcode中
- 19. Android全屏顯示
- 20. 顯示屏全PHTH
- 21. 全屏顯示不顯示視頻
- 22. NSWindow全屏顯示,但顯示碼頭
- 23. 顯示NSWindow在全屏
- 24. 在Tkinter上顯示全屏模式
- 25. 如何在iPhone上顯示全屏iAd?
- 26. 在雙顯示器配置中全屏顯示Silverlight視頻
- 27. 水平菜單顯示器在寬屏顯示器上顯示不正確
- 28. HTML輔助顯示的顯示名稱屬性無標籤
- 29. 可可全屏顯示屏,不消隱主顯示屏mac
- 30. PrimeFaces graphicImage的不顯示由輔助bean
上這工作,但需要參考System.Windows.Forms.dll – 2010-05-23 21:08:17