Montrant un formulaire Windows sur un moniteur secondaire?
Je suis en train de définir un Formulaire Windows sur le moniteur secondaire, comme suit:
private void button1_Click(object sender, EventArgs e)
{
MatrixView n = new MatrixView();
Screen[] screens = Screen.AllScreens;
setFormLocation(n, screens[1]);
n.Show();
}
private void setFormLocation(Form form, Screen screen)
{
//first method
Rectangle bounds = screen.Bounds;
form.SetBounds(bounds.X, bounds.Y, bounds.Width, bounds.Height);
//second method
//Point location = screen.Bounds.Location;
//Size size = screen.Bounds.Size;
//form.Left = location.X;
//form.Top = location.Y;
//form.Width = size.Width;
//form.Height = size.Height;
}
Les propriétés des limites semblent corrects, mais dans les deux méthodes que j'ai essayé, cela permet de maximiser le formulaire sur le moniteur principal. Des idées?
- Juste pour être sûr, la WindowState sur MatrixView n'est pas Maximisée, est-il?
- Non, la WindowState est Normal.
Vous devez vous connecter pour publier un commentaire.
Essayez de définir WindowStartUpLocation paramètre en "manual" à l'intérieur de votre SetFormLocation méthode.
this.WindowState = FormWindowState.Normal;
et de passer ensuite à d'autres de l'écranc'est la Forme de référence.
@Gengi la réponse est succincte et fonctionne bien. Si la fenêtre est maximisée à ne pas déplacer la fenêtre. Cet extrait résout que (bien que je soupçonne que le windows "normal" dimensions doivent être plus petits que les nouvelles dimensions de l'écran pour que cela fonctionne):
Êtes-vous sûr
screens[1]
est secondaire? Donnerscreens[0]
un essai. Votre code est fondamentalement correcte.Ok, j'ai vérifié, vous aurez à faire après le Show():
ce qui donne un certain scintillement indésirable. Mais vous pouvez probablement le faire:
J'ai utilisé ce pour une XNA 4 Double Écran (Plein Écran XNA Game Fenêtre + WinForm)
Dans le Form_Load() la méthode, placez le code suivant:
Pour afficher le formulaire sur l'écran secondaire:
Si vous êtes à la recherche d'un écran spécifique, vous pouvez faire une boucle sur Écran".AllScreens" et d'utiliser le processus ci-dessus.
secondaryForm
et où est-elle déclaré dans votre ou OP code?secondaryForm
est unForm
type d'objet où j'ai mis c'est l'endroit à être à l'intérieur de lasecondaryFormScreen
limites. Il n'a pas à êtreForm
selon ce que vous utilisez, vous pouvez définir les mêmes limites comme je l'ai fait à la forme d'allouer à l'intérieur de l'autre de l'écranForme d'ensemble de Démarrage Position propriété Manuel