Choisir l'écran d'affichage

Résolu
edwinzap - 17 mars 2013 à 12:06
 edwinzap - 17 mars 2013 à 18:46
Bonjour.
Je voudrais bien pour une application (et également une prochaine) de pouvoir choisir l'écran sur lequel s'affiche le formulaire. J'ai trouvé la propriété screen mais je n'arrive pas à l'utiliser correctement.
Mon problème est que si je lance mon programme sur un ordinateur possédant deux écrans, mon application se lance sur l'écran secondaire (j'ai mis:
Me.StartPosition = FormStartPosition.CenterScreen

Je souhaiterait donc pouvoir choisir sur quel écran afficher mon formulaire.

Merci d'avance

9 réponses

Utilisateur anonyme
17 mars 2013 à 12:57
2
Merci pour la compréhension banana32.
Je tenais simplement à dire que je suis débutant et que j'essaye d'apprendre seul avec les moyens que j'ai. Je ne poste qu'après une longue recherche. Il est vrai que j'aurais du chercher plus avant de poster mon 2ème message. Quant au lien, merci. Mais avant de poster le second message, j'avais regardé tout les liens, mais je trouve que pour des débutants, l'aide de microsoft est peu compréhensible et les exemples peu représentatifs(si il y en a !).
Tu cours le risques de te faire insulter
. Je n'ai jamais insulter qqn sur un forum et je ne le ferai jamais, surtout si il nous aide.
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Button2.Enabled = False
        'pour connaitre le nombre d'écrans connectés
        Dim nbre_écran As Integer
        nbre_écran = Screen.AllScreens.LongLength
        Label1.Text "Nombre d'écrans " & nbre_écran.ToString
        Dim écran As Screen = Screen.PrimaryScreen
        Label2.Text = "WorkingArea écran 1: " & Chr(13) & écran.WorkingArea.ToString
        If nbre_écran > 1 Then
            Label3.Text = "WorkingArea écran 2: " & Chr(13) & Screen.AllScreens(1).WorkingArea.ToString
            Button2.Enabled = True
        End If
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.Location = New System.Drawing.Point(Screen.PrimaryScreen.WorkingArea.Location.X + 100, Screen.PrimaryScreen.WorkingArea.Location.Y + 100)
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.Location = New System.Drawing.Point(Screen.AllScreens(1).WorkingArea.Location.X + 100, Screen.AllScreens(1).WorkingArea.Location.Y + 100)
    End Sub)
1
Merce mais comment faire alors pour mettre le formulaire sur l'écran principale. Je suppose que je dois utiliser la fonction Primaryscreen. Dois-je calculer les dimensions pour pouvoir mettre le formulaire au milieu ensuite? La fonction allscreen par exemple est censée afficher un tableau, mais je ne sais pas comment il faut faire pour afficher ce tableau.
De même la propriété location permet de placer ou l'on veut le formulaire, mais est-ce par rapport au coin supérieur gauche du premier écran ou du 2ème?
Comment faire?
0
Utilisateur anonyme
17 mars 2013 à 14:54
Tu n'aurais pas posé toutes ces questions si tu avais exécuté et compris le code montré sur le lien que je t'ai donné. Ce dernier contient lui même d'autres liens pointant sur toutes les méthodes et propriétés de l'objet.
Au travail
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
17 mars 2013 à 14:57
Sur le code de ce lien d'ailleurs, tu as la réponse à ta question principale.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mars 2013 à 15:07
Bonjour, Banana32,
Comment oses-tu demander de lire un peu et de comprendre un peu ?
Tu cours le risques de te faire insulter
(c'est de plus en plus fréquent, par les temps qui courent).
Tu n'as pas compris ? Dans près de 100% des cas, depuis quelque temps, on attend la bouche ouverte que soit donné un code à copier/coller, voyons ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
17 mars 2013 à 15:27
Bonjour ucfoutu,

Je donne maintenant de la lecture car j'en ai marre de voir que 90% des posts sont abandonnés par les demandeurs sans même être lus. C'est presque pire qu'une insulte. Pourquoi donc perdre son temps hein ?

Après, pour ce sujet-ci, je n'ai pas les moyens de tester physiquement une solution. Sinon j'aurais donné du code car edwinzap (voir l'historique de ses conversations) n'est pas du style à lâcher le morceau.

C'est dommage car les mots-clés bien choisis ainsi que le titre du sujet, le feront remonter en début de liste lors de recherches sur le forum.

Bon dimanche à toi et tes proches
0
Merci Banana32.
J'ai activé l'option strict (mais ça n'as rien changé visiblement).
C'est un code que j'ai fait rapidement pour pouvoir simplement tester sur un autre ordinateur possédant 2 écrans, mais merci pour les conseils.
Effectivement pour le centrage des rectangles ça doit fonctionner correctement, en sachant alors que grand_rectangle_largeur est la largeur de l'écran et petit_rectangle_largeur est la largeur du formulaire.

En tout cas encore merci pour toutes les réponses de votre part à vous, banana32 et ucfoutu, car pour la plupart de mes question, je n'aurais jamais pu trouver même en cherchant des jours sur internet (qui est le seul outil que j'ai pour apprendre)
0
Utilisateur anonyme
17 mars 2013 à 18:16
Ton code a l'air fonctionnel dans l'état. Juste 5 remarques :

1/ Toujours activer Option Strict dans les propriétés du projet. Ceci permet d'afficher les erreurs de type.
Dans ton code, LongLength renvoie un Long. Ainsi, il faut écrire :
Dim nbre_ecran As Long
        nbre_ecran = Screen.AllScreens.LongLength

2/ Chr(13) peut avantageusement être remplacé par Environment.NewLine
3/ Les accents sont à éviter dans un code.
4/ Le centrage d'un rectangle par rapport à un autre peut être amélioré :
    petit_rectangle.gauche = (grand_rectangle_largeur - petit_rectangle_largeur) / 2
    petit_rectancle.haut = (grand_rectangle_hauteur - petit_rectangle_hauteur) / 2

5/ Une variable peut être initialisée dès sa déclaration :
Dim nbre_ecran As Long = Screen.AllScreens.LongLength
-2
Rejoignez-nous