IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual Studio Discussion :

problème dimensions d'une form à l'utilisation


Sujet :

Visual Studio

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut problème dimensions d'une form à l'utilisation
    Bonjour à vous tous

    J'ai un souci avec les dimensions d'un formulaire à l'utilisation.
    A savoir que les dimensions de ce formulaire sont visuellement multipliés par environ 1,5
    Une photo vaut mieux que de longues explication.

    Comme on le voit, il n'y a pas photo.

    J'utilise un écran plat de 1920x1080 pixels

    Mon formulaire fait à la conception 1000x453 pixels et en utilisation 1000x442 (j'affiche les dimensions en marche dans la fenêtre debug), mais il occupe visuellement une largeur d'environ 1514 pixels à l'écran.

    Ceci est très gênant pour moi car je distribue cette application à mes amis, et il y a le même problème chez eux.
    En tous les cas, je n'y comprend rien

    Peut-être, par chance, quelqu'un a la réponse à ce problème

    Claude Azoulai

  2. #2
    Membre habitué Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Points : 159
    Points
    159
    Par défaut
    La dimension de la fenetre se modifie avec "Size" ou "ClientSize". Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MaForm.Size = New System.Drawing.Size(300, 400)
    MaForm.ClientSize = New System.Drawing.Size(300, 400)
    Ne l'utilisez vous pas quelque part ?

    Une solution (qui ne resoud pas mais masque le problème) consiste à l'ajouter dans le "Form_Load".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub MaForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MaForm.Size = New System.Drawing.Size(1000, 453)
    End Sub

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Merci de votre aide

    Malheureusement, le fait d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.ClientSize = New System.Drawing.Size(1000, 453)
    End Sub
    Ne change rien et si je diminue les dimensions, cela rogne la fenêtre et des composants disparaissent.
    En fait, non seulement la fenêtre, mais tous les composants changent de dimension visuellement car comme je l'ai dit, pendant le déroulement du programme,si j'extrais les dimensions et les affiche, j'ai les bonnes valeurs à quelques pixels près.

    Il y a peut-être un réglage à faire dans Visual Studio 2010 mais je ne le connais pas.

    Claude Azoulai

  4. #4
    Membre habitué Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par Claude_Azoulai Voir le message
    Malheureusement, le fait d'écrire [...] Ne change rien
    => Avez-vous fait une recherche sur les chaines "Size" et "ClientSize" dans votre solution afin de verifier que les dimensions ne soient pas modifiée à un endroit bien caché ?
    => C'est peu-t-être bête... Mais si vous faite sur votre application Ctrl + Roulette de la souris, que se passe-t-il ?



    Citation Envoyé par Claude_Azoulai Voir le message
    [...] cela rogne la fenêtre et des composants disparaissent.
    => A quelle valeur est la proprite "Dock" de vos controle dans la fenetre principale : None, Left, Right, Top, Bottom ou Fill ?

  5. #5
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut autoscalemode,perform autoscaling
    bonjour Azoulay

    extrait MSDN Doc :
    Notes
    La propriété AutoScaleMode spécifie le mode actuel de mise à l'échelle automatique de ce contrôle. La mise à l'échelle par Font est utile si vous souhaitez étirer ou réduire un contrôle ou un formulaire d'après la taille des polices dans le système d'exploitation et doit être utilisée lorsque la taille absolue du contrôle ou du formulaire est sans importance. La mise à l'échelle par Dpi est utile lorsque vous souhaitez dimensionner un contrôle ou un formulaire par rapport à l'écran. Par exemple, vous pouvez utiliser une mise à l'échelle en points par pouce sur un contrôle affichant un graphique de façon à ce qu'il occupe toujours un certain pourcentage de l'écran.

    Pour plus d'informations sur la mise à l'échelle automatique, consultez Mise à l'échelle automatique
    Attention :
    Arbitrary mixtures of DPI and font scaling modes are not supported. Although you may scale a user control using one mode (for example, DPI) and place it on a form using another mode (Font) with no issues, but mixing a base form in one mode and a derived form in another can lead to unexpected results.

    None -La mise à l'échelle automatique est désactivée.
    Font -Contrôle l'échelle par rapport aux dimensions de la police utilisée par les classes, qui est généralement la police système.
    Dpi -Contrôle l'échelle par rapport à la résolution d'affichage. Les résolutions communes sont 96 et 120 ppp.
    Inherit -Contrôle l'échelle d'après le mode de mise à l'échelle parent des classes. En l'absence de parent, la mise à l'échelle automatique est désactivée.
    Alors essaye ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            'ce mode herite du panneau de configuration (fontsize en %=96 ou 120)
     
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
     
           'Herite du control parent
            Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit
        End Sub
    BON CODE....

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Tous d'abord merci à Le Sygne et à MABROUKI

    Après avoir essayé tous les réglages possibles de AutoScaleMode, sans résultat, j'ai ajouté un nouveau formulaire (Form3) à mon projet avec les mêmes dimensions que celui incriminé (Form1).
    Là, Form3 s'affichait correctement.
    J'ai copié tous les composants de Form1 dans Form3, toujours pas de problème.
    Je me suis dit que c'était le code qui me jouait des tours et j'ai copié tout le code de Form1 dans Form3, (en changeant Form1 en Form3 dans les routines), toujours pas de problème.
    Alors, il s'agissait peut-être d'une propriété mal réglée, jai donc fait trois capture d'écran de la fenêtre des propriétés de Form3 que j'ai imprimé.
    J'ai comparé ces propriétés avec celles de Form1, elles étaient parfaitement identiques, et pourtant le comportement à l'affichage était différent.

    Comme je ne suis pas très obstiné, j'ai utilisé Form3 à la place de Form1 dans mon application, et ça marche ! ! ! ! ! !

    Ce soir, je vais peut-être avoir du mal à m'endormir, mais le principal est que mon application fonctionne comme je le voulais.

    Encore merci de votre aide qui est précieuse à tous

    Claude Azoulai

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dimensions d'une Form, Pixels ou autre ?
    Par Claude_Azoulai dans le forum VB.NET
    Réponses: 7
    Dernier message: 02/05/2011, 16h49
  2. problème fermeture d'une form
    Par zyanya dans le forum VB.NET
    Réponses: 1
    Dernier message: 17/05/2010, 17h40
  3. Problème pour détruire une Form
    Par Shredder dans le forum Langage
    Réponses: 13
    Dernier message: 07/05/2008, 17h37
  4. Réponses: 3
    Dernier message: 26/01/2007, 23h41
  5. [VB6] Dimensions d'une form - résolution écran
    Par eagleleader dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2005, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo