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

VB.NET Discussion :

resolution automatique des forms visual basic 2010


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut resolution automatique des forms visual basic 2010
    Bonjour,
    j'ai réaliser un petit programme avec visual basic 2010 le problème qui me gène avant de valider mon travaille c que j'arrive pas a justifier la taille des forms automatiquement avec la résolution de l'écran lorsque je transfert le projet d'un pc a un autre avec différente taille de l'écran
    merci d'avance

  2. #2
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    tape "taille form vb.net fonction ecran" dans

  3. #3
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'adapte la taille du formulaire à la résolution du pc
    Me.Size = New System.Drawing.Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height)
    'défini l'emplacement du formulaire
    Me.Location = New System.Drawing.Point(0, 0)
    *code non-testé*

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    j'ai utiliser se code mais il génère une erreur au niveau de me -> syntaxe error

  5. #5
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Me désigne le formulaire dans lequel tu est,
    bizarre que VS2010 te génère une erreur la dessus.

    Dans quel événement as tu écrit ton code? au form_load?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    j'ai placer ce bout de code dans form_load l'erreur a été résolut
    mais le problème de résolution est encore là
    y a t-il d'autre solution

  7. #7
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Moi ça fonctionne pourtant, ça met mon formulaire en plein écran.
    met le code que tu a dans ton form_load.

  8. #8
    Membre régulier Avatar de Anklor
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 76
    Points : 120
    Points
    120
    Par défaut
    2 solutions :

    1 - ta form est remplie de contrôles et donc tu ne peux pas rendre ta form + petite que la résolution donc tu mets le tout dans un panel et tu autorises les scrollbars

    2 - tu fabriques ta form au minimum (pas + grand que la résolution de ton petit écran)

    tu peux utiliser aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.WindowState = Maximized

  9. #9
    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 change displaysettings
    bonjour
    Il faut passer par l'api Windows et P/Invoke.
    voici un exemple SDK Windows pour l'appel à inclure dans ton projet.

    code :
    1/projet Dll appele WindowsResolution à referencer dans ton projet Application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
     
    '1/fichier Display.vb
     
    Imports System.Runtime.InteropServices
     
     
     
    ' Encapsulates access to the PInvoke functions
    Public Class Display
     
        ' Return a list of all possible display types for this computer
        Public Function GetDisplaySettings() As List(Of DevMode)
     
            Dim modes As New List(Of DevMode)
            Dim devmode As DevMode = Me.DevMode
     
            Dim counter As Integer = 0
            Dim returnValue As Integer = 1
     
            ' A return value of zero indicates that no more settings are available
            While returnValue <> 0
                returnValue = GetSettings(devmode, counter)
     
                modes.Add(devmode)
     
                counter = counter + 1
            End While
     
            Return modes
     
        End Function
     
        ' Return the current display setting
        Public Function GetCurrentSettings(ByRef dm As DevMode) As Integer
            ' helper to obtain current settings
            Return GetSettings(dm, NativeMethods.ENUM_CURRENT_SETTINGS)
        End Function
     
        ' Change the settings to the values of the DEVMODE passed
        Public Function ChangeSettings(ByVal devmode As DevMode) As String
            Dim errorMessage As String = ""
     
            Dim iRet As ReturnCodes = NativeMethods.ChangeDisplaySettings(devmode, 0)
     
            Select Case iRet
                Case ReturnCodes.DISP_CHANGE_SUCCESSFUL
                    Exit Function
                Case ReturnCodes.DISP_CHANGE_RESTART
                    ' TODO: Raise System Restart Required Event
                    errorMessage = "Please restart your system"
                    Exit Function
                Case ReturnCodes.DISP_CHANGE_FAILED
                    errorMessage = "ChangeDisplaySettigns API failed"
                    Exit Function
                Case ReturnCodes.DISP_CHANGE_BADDUALVIEW
                    errorMessage = "The settings change was unsuccessful because system is DualView capable."
                    Exit Function
                Case ReturnCodes.DISP_CHANGE_BADFLAGS
                    errorMessage = "An invalid set of flags was passed in."
                    Exit Function
                Case ReturnCodes.DISP_CHANGE_BADPARAM
                    errorMessage = "An invalid parameter was passed in. This can include an invalid flag or combination of flags."
                    Exit Function
                Case ReturnCodes.DISP_CHANGE_NOTUPDATED
                    errorMessage = "Unable to write settings to the registry."
                    Exit Function
                Case Else
                    errorMessage = "Unknown return value from ChangeDisplaySettings API"
                    Exit Function
            End Select
            Return errorMessage
        End Function
     
        ' Return a properly configured DEVMODE
        Public ReadOnly Property DevMode() As DevMode
            Get
                Dim m_devmode As DevMode = New DevMode()
                m_devmode.dmDeviceName = New String(New Char(), 32)
                m_devmode.dmFormName = New String(New Char(), 32)
                m_devmode.dmSize = CType(Marshal.SizeOf(DevMode), Short)
                Return m_devmode
            End Get
        End Property
     
        ' call the external function inthe Win32 API
        Private Function GetSettings(ByRef dm As DevMode, ByRef iModeNum As Integer) As Integer
            ' helper to wrap EnumDisplaySettings Win32 API
            Return NativeMethods.EnumDisplaySettings(Nothing, iModeNum, dm)
        End Function
     
    End Class
    '2/fichier NativeMethods.vb
    Imports System.Runtime.InteropServices
     
    ' Encapsulate the magic numbers for the return value in an enumeration
    Public Enum ReturnCodes As Integer
        DISP_CHANGE_SUCCESSFUL = 0
        DISP_CHANGE_BADDUALVIEW = -6
        DISP_CHANGE_BADFLAGS = -4
        DISP_CHANGE_BADMODE = -2
        DISP_CHANGE_BADPARAM = -5
        DISP_CHANGE_FAILED = -1
        DISP_CHANGE_NOTUPDATED = -3
        DISP_CHANGE_RESTART = 1
    End Enum
     
    ' To see how the DEVMODE struct was translated from the unmanaged to the managed see the Task 2 Declarations section
     
     
    ' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_8nle.asp
    <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
    Public Structure DevMode
     
        ' The MarshallAs attribute is covered in the Background section of the article
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
        Public dmDeviceName As String
     
        Public dmSpecVersion As Short
        Public dmDriverVersion As Short
        Public dmSize As Short
        Public dmDriverExtra As Short
        Public dmFields As Integer
        Public dmPositionX As Integer
        Public dmPositionY As Integer
        Public dmDisplayOrientation As Integer
        Public dmDisplayFixedOutput As Integer
        Public dmColor As Short
        Public dmDuplex As Short
        Public dmYResolution As Short
        Public dmTTOption As Short
        Public dmCollate As Short
     
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> _
        Public dmFormName As String
     
        Public dmLogPixels As Short
        Public dmBitsPerPel As Short
        Public dmPelsWidth As Integer
        Public dmPelsHeight As Integer
        Public dmDisplayFlags As Integer
        Public dmDisplayFrequency As Integer
        Public dmICMMethod As Integer
        Public dmICMIntent As Integer
        Public dmMediaType As Integer
        Public dmDitherType As Integer
        Public dmReserved1 As Integer
        Public dmReserved2 As Integer
        Public dmPanningWidth As Integer
        Public dmPanningHeight As Integer
     
        Public Overrides Function ToString() As String
            Return dmPelsWidth.ToString() + " x " + dmPelsHeight.ToString()
        End Function
     
     
        Public Function GetInfoArray() As String()
     
            Dim items() As String = New String(5) {}
     
            items(0) = dmDeviceName
            items(1) = dmPelsWidth.ToString()
            items(2) = dmPelsHeight.ToString()
            items(3) = dmDisplayFrequency.ToString()
            items(4) = dmBitsPerPel.ToString()
     
            Return items
     
        End Function
     
    End Structure
     
    Public Class NativeMethods
     
        ' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons_84oj.asp
        <DllImport("user32.dll", CharSet:=CharSet.Ansi)> _
        Public Shared Function EnumDisplaySettings(ByVal lpszDeviceName As String, ByVal iModeNum As Integer, ByRef lpDevMode As DevMode) As Integer
        End Function
     
        ' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons_7gz7.asp
        <DllImport("user32.dll", CharSet:=CharSet.Ansi)> _
        Public Shared Function ChangeDisplaySettings(ByRef lpDevMode As DevMode, ByVal dwFlags As Integer) As ReturnCodes
        End Function
     
     
        Public Const ENUM_CURRENT_SETTINGS As Integer = -1
     
    End Class
    2/ton projet avec 2 formes :
    -frmTonAppli.vb test
    -une 2eme forme appele WindowsResolutionSample.vb qui affiche toutes les resolutions possibles pour faire un choix avec un click
    -ajouter une reference au projet 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
     
    Imports WindowsResolution
     
    Public Class WindowsResolutionSample
     
        Public Sub New()
     
            ' This call is required by the Windows Form Designer.
            InitializeComponent()
     
            ' Add any initialization after the InitializeComponent() call.
            display = New Display()
     
            Me.GetCurrentSettings()
     
        End Sub
     
        ' Get the current settings and add them to a list view
        Private Sub GetCurrentSettings()
     
            Me.listView1.Items.Clear()
     
            settings = display.GetDisplaySettings()
     
            Dim mode As DevMode
            For Each mode In settings
     
                Dim NewItem As ListViewItem = New ListViewItem(mode.GetInfoArray())
     
                NewItem.Tag = mode
                Me.listView1.Items.Add(NewItem)
     
            Next
     
            Me.HighLightCurrentSetting()
     
        End Sub
     
        ' double-click an entry in the list view to change to that setting
        Private Sub listView1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles listView1.MouseDoubleClick
     
            Dim selectedMode As DevMode = CType(Me.listView1.SelectedItems(0).Tag, DevMode)
     
            Dim result As String = display.ChangeSettings(selectedMode)
     
            If result = String.Empty Then
                MessageBox.Show("Settings successfully updated", "Windows Resolution Change", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Me.HighLightCurrentSetting()
            Else
                MessageBox.Show(result, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End If
     
        End Sub
     
        ' loop over all of the settings and highlight the current one
        Private Sub HighLightCurrentSetting()
     
            Dim currentMode As DevMode = display.DevMode
            Dim result As Integer = display.GetCurrentSettings(currentMode)
     
            For Each item As ListViewItem In Me.listView1.Items
     
                Dim mode As DevMode = CType(item.Tag, DevMode)
     
                If currentMode.dmPelsHeight = mode.dmPelsHeight AndAlso _
                currentMode.dmPelsWidth = mode.dmPelsWidth AndAlso _
                currentMode.dmBitsPerPel = mode.dmBitsPerPel AndAlso _
                currentMode.dmDisplayFrequency = mode.dmDisplayFrequency AndAlso _
                currentMode.dmDisplayOrientation = mode.dmDisplayOrientation AndAlso _
                currentMode.dmDeviceName = mode.dmDeviceName Then
                    item.BackColor = Color.Yellow
                    item.ForeColor = Color.Blue
                Else
                    item.BackColor = Color.White
                    item.ForeColor = Color.Black
                End If
     
            Next
     
        End Sub
     
        Dim display As Display
        Dim settings As List(Of DevMode)
     
    End Class
     
    'ajouter une reference au projet 1 
    Public Class frmTonAppli
     
        Private Sub WindowsResolutionExemple_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WindowsResolutionExemple.Click
            Dim exemple As New WindowsResolutionSample()
            exemple.Show()
        End Sub
    End Class
    bon code .....

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 176
    Points : 25 118
    Points
    25 118
    Par défaut
    Citation Envoyé par hunteshiva Voir le message
    Me désigne le formulaire dans lequel tu est
    seulement vrai quand on est sur un form, Me désigne l'instance sur laquelle le code s'exécute



    Citation Envoyé par MABROUKI Voir le message
    bonjour
    Il faut passer par l'api Windows et P/Invoke.
    voici un exemple SDK Windows pour l'appel à inclure dans ton projet.
    pour modifier la taille du form en fonction de la taille de l'écran ?? ca fait pas un peu lourd ?

  11. #11
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    s'il vous plais pouvez vous me spécifie l'emplacement de se code dans le projet
    j'ai pas compris ou il faut mètre ces codes

  12. #12
    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 resolution ecran
    bonjour pol63
    si tu as plus simple dans le net framework,eclaire mes lumieres.
    En fait l'api .Net FrameWork recommende de ne pas manipuler la resolution d'ecran que dans des cas vraiment exceptionnel.
    Parce que cela peut entrainer une perte de l'affichage.
    Enfin pour repondre à dalinho84 si tu n' as compris ce que j'ai transmis,abondonne ton projet c'est un conseil d'ami.
    bonne soiree.....

  13. #13
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 176
    Points : 25 118
    Points
    25 118
    Par défaut
    j'ai pas exactement compris ce qu'il veut faire, mais il y a la classe screen qui permet de connaitre la résolution de l'écran, permettant d'adapter la taille du form
    et après avec des anchor et dock et autres controles de positionnement on arrive à avoir un rendu pareillement proportionné

    pour du redimensionnement complet y compris les font, il faut passer sur wpf

  14. #14
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 688
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 688
    Points : 1 960
    Points
    1 960
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    pour du redimensionnement complet y compris les font, il faut passer sur wpf
    On peut aussi passer par un tablelayoutpanel en pre-definissant tout.
    Mais c'est lourd, long et fastidieux à la creation, mais apres ca tourne nickel.

Discussions similaires

  1. [Débutant] Calcul des valeurs des TextBox en Visual basic 2010
    Par stracoma dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/09/2014, 21h52
  2. Réponses: 7
    Dernier message: 16/04/2013, 08h26
  3. Livre Visual Basic 2010
    Par jolona dans le forum Livres
    Réponses: 8
    Dernier message: 03/07/2010, 16h17
  4. Réponses: 2
    Dernier message: 06/05/2010, 15h52
  5. La coévolution des langages Visual Basic et C# est maintenant officielle
    Par Jérôme Lambert dans le forum Général Dotnet
    Réponses: 11
    Dernier message: 02/11/2008, 00h47

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