Come è possibile programmare un'applicazione dotNet di Windows (o WPF) per consentirne l'attivazione a schermo intero sul monitor secondario?Andare a schermo intero sul monitor secondario
risposta
Vedi this codeproject article.
Il codice in là funziona, ma di default per il monitor principale. Per cambiare questo, sarà necessario sostituire le chiamate a GetSystemMetrics effettuerà chiamate a GetMonitorInfo. Utilizzando GetMonitorInfo, è possibile ottenere il RECT appropriato da passare a SetWindowPos.
GetMonitorInfo consente di ottenere il RECT per qualsiasi monitor.
C'è uno MSDN Article on Position Apps in Multi-Monitor Setups che potrebbe aiutare a spiegare le cose un po 'meglio.
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;
}
Non è chiaro dalla tua domanda, se siete alla ricerca di un modo per spostare la finestra sul monitor secondario e poi andare a schermo intero, o se si sta solo cercando di supportare la modalità a schermo intero su qualsiasi schermo la finestra è su (che può essere primario o secondario).
Se la finestra successiva, per una finestra WPF, sebbene non proprio uguale alla modalità a schermo intero, è possibile rimuovere i bordi quando è ingrandita e ripristinare il bordo quando non ingrandito. Non è necessario verificare per quale monitor, ecc. La visualizzazione della didascalia/barra del titolo è controllata dallo stato del confine.
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);
}
merito va a Pavel per la sua risposta basata su form nella questione attuale e Nir la sua risposta in this question.
Per le app WPF, vedere this post. In definitiva dipende da quando WindowState è impostato su Massimizzato. Se lo si imposta in XAML o nel costruttore di finestre (ad esempio prima che la finestra venga caricata) sarà sempre massimizzato sul display principale. Se, al contrario, imposti WindowState su Massimizzato quando la finestra viene caricata, massimizzerà lo schermo su cui è stato ingrandito prima.
** Grazie! ** Spostamento del codice di posizione di ripristino dal costruttore di classi di finestre al gestore _Loaded_ aiutato. L'unica cosa che dovrei aggiungere è che la classe Window invia la notifica _LocationChanged_ con le impostazioni predefinite prima di inviare la notifica _Loaded_, quindi è necessario saltare la notifica _LocationChanged_ finché non si ripristina la posizione della finestra in _Loaded_ handler. – Mar
In WPF: imposta la proprietà WindowState in Normal (non Maximix) e crea l'evento Loaded. Nel caso scrivere questo codice:
this.Left = SystemParameters.PrimaryScreenWidth + 100;
this.WindowState = System.Windows.WindowState.Maximized;
Ciò presuppone che il monitor secondario si trovi a destra di quello principale. – Paul
Metodo di estensione per ingrandire una finestra sul monitor secondario (se ce n'è uno). Non si assume che il monitor secondario sia 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;
}
}
}
}
funziona come un fascino ... – kennyzx
ho notato una risposta che sostiene l'impostazione della posizione in caso Loaded, ma questo provoca sfarfallio quando la finestra viene prima mostrato normale, e poi massimizzato. Se si sottoscrive l'evento SourceInitialized nel costruttore e impostare la posizione in là tratterà massimizzare sul monitor secondari senza sfarfallio - Sto assumendo WPF qui
public MyWindow()
{
SourceInitialized += MyWindow_SourceInitialized;
}
void MyWindow_SourceInitialized(object sender, EventArgs e)
{
Left = 100;
Top = 50;
Width = 800;
Height = 600;
WindowState = WindowState.Maximized;
}
coordinate sostituire qualsiasi sul monitor secondario
- 1. Finestra di visualizzazione a schermo intero sul monitor secondario utilizzando Qt
- 2. Spostare finestra a schermo intero per monitor secondario con Win32/SDL
- 3. Come posso rendere la tela HTML5 andare a schermo intero?
- 4. Esecuzione di VNC a schermo intero con più monitor
- 5. Perché WPF MediaElement non funziona sul monitor secondario?
- 6. Come disabilitare un monitor secondario (con ChangeDisplaySettingsEx)?
- 7. Applicazione C++ per scollegare il monitor secondario
- 8. Come posso visualizzare un modulo su un monitor secondario?
- 9. Espandi un div a schermo intero
- 10. finestra del browser a schermo intero sul documento di caricamento
- 11. Passaggio da schermo intero a non intero schermo pop/slide
- 12. SDL modalità a schermo intero falso sulla configurazione a doppio monitor sotto linux
- 13. Come rendere una finestra a schermo intero in un display secondario con tkinter?
- 14. JFrame a schermo intero Java
- 15. AVCam non a schermo intero
- 16. Applicazione a schermo intero Tkinter
- 17. UIWebview a schermo intero dimensioni
- 18. Sprite video a schermo intero
- 19. Sfocatura gaussiana a schermo intero
- 20. non a schermo intero UINavigationController
- 21. L'app Android Webview non consente al lettore video di andare a schermo intero
- 22. UICollectionView zoom a schermo intero su UICollectionViewCell
- 23. Rileva larghezza schermo per più monitor
- 24. ToolTip sul secondo monitor viene visualizzato sul bordo del monitor
- 25. Come fare un iFrame per andare a schermo intero con un clic del mouse?
- 26. Swift 2: la rotazione dello schermo solo sul video a schermo intero
- 27. per giocare a schermo intero con Android
- 28. Visualizzazione di un modulo Windows su un monitor secondario?
- 29. Come rendere una singola finestra della virtualbox a schermo intero
- 30. Metodo per la pagina HTML a schermo intero a schermo intero?
Funziona ma richiede un riferimento a System.Windows.Forms.dll –