Savoir comment fonctionne un code.

Fermé
PouleFauna Messages postés 107 Date d'inscription lundi 18 mai 2020 Statut Membre Dernière intervention 29 mai 2022 - 30 août 2020 à 11:49
 Utilisateur anonyme - 31 août 2020 à 13:05
Bonjour,

J'ai trouvé un code sur Internet mais je ne sais pas comment on fait pour l'intégrer sur un projet. Voici le code :

Imports System.Runtime.InteropServices
Public Class FormResizer
    Dim TargetForm As Form
    Private _BorderWidth As Integer
    Private _ResizeDirect As resizeDirectection = resizeDirectection.None
    ''' <summary>
    ''' Make borderless Form resizeable.
    ''' </summary>
    ''' <param name="value">As Form</param>
    ''' <param name="borderWidth">(Optional) BorderWidth as Integer (Default = 4)</param>
    Sub New(ByVal value As Form, Optional borderWidth As Integer = 4)
        TargetForm = value
        _BorderWidth = borderWidth
        AddHandler TargetForm.MouseDown, AddressOf Form_MouseDown
        AddHandler TargetForm.MouseMove, AddressOf Form_MouseMove
    End Sub
    Public Enum resizeDirectection
        None = 0
        Left = 1
        TopLeft = 2
        Top = 3
        TopRight = 4
        Right = 5
        BottomRight = 6
        Bottom = 7
        BottomLeft = 8
    End Enum
    Public Property resizeDirect() As resizeDirectection
        Get
            Return _ResizeDirect
        End Get
        Set(ByVal value As resizeDirectection)
            _ResizeDirect = value
            Select Case value
                Case resizeDirectection.Left
                    TargetForm.Cursor = Cursors.SizeWE
                Case resizeDirectection.Right
                    TargetForm.Cursor = Cursors.SizeWE
                Case resizeDirectection.Top
                    TargetForm.Cursor = Cursors.SizeNS
                Case resizeDirectection.Bottom
                    TargetForm.Cursor = Cursors.SizeNS
                Case resizeDirectection.BottomLeft
                    TargetForm.Cursor = Cursors.SizeNESW
                Case resizeDirectection.TopRight
                    TargetForm.Cursor = Cursors.SizeNESW
                Case resizeDirectection.BottomRight
                    TargetForm.Cursor = Cursors.SizeNWSE
                Case resizeDirectection.TopLeft
                    TargetForm.Cursor = Cursors.SizeNWSE
                Case Else
                    TargetForm.Cursor = Cursors.Default
            End Select
        End Set
    End Property
    <DllImport("user32.dll")>
    Public Shared Function ReleaseCapture() As Boolean
    End Function
    <DllImport("user32.dll")>
    Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    End Function
    Private Const WM_NCLBUTTONDOWN As Integer = &HA1
    Private Const HTBORDER As Integer = 18
    Private Const HTBOTTOM As Integer = 15
    Private Const HTBOTTOMLEFT As Integer = 16
    Private Const HTBOTTOMRIGHT As Integer = 17
    Private Const HTCAPTION As Integer = 2
    Private Const HTLEFT As Integer = 10
    Private Const HTRIGHT As Integer = 11
    Private Const HTTOP As Integer = 12
    Private Const HTTOPLEFT As Integer = 13
    Private Const HTTOPRIGHT As Integer = 14
    Private Sub ResizeForm(ByVal direction As resizeDirectection)
        Dim dir As Integer = -1
        Select Case direction
            Case resizeDirectection.Left
                dir = HTLEFT
            Case resizeDirectection.TopLeft
                dir = HTTOPLEFT
            Case resizeDirectection.Top
                dir = HTTOP
            Case resizeDirectection.TopRight
                dir = HTTOPRIGHT
            Case resizeDirectection.Right
                dir = HTRIGHT
            Case resizeDirectection.BottomRight
                dir = HTBOTTOMRIGHT
            Case resizeDirectection.Bottom
                dir = HTBOTTOM
            Case resizeDirectection.BottomLeft
                dir = HTBOTTOMLEFT
        End Select
        If dir <> -1 Then
            ReleaseCapture()
            SendMessage(TargetForm.Handle, WM_NCLBUTTONDOWN, dir, 0)
        End If
    End Sub
    Private Sub Form_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        If e.Button = Windows.Forms.MouseButtons.Left And TargetForm.WindowState <> FormWindowState.Maximized Then
            ResizeForm(resizeDirect)
        End If
    End Sub
    Private Sub Form_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        If e.Location.X < _BorderWidth And e.Location.Y < _BorderWidth Then
            resizeDirect = resizeDirectection.TopLeft
        ElseIf e.Location.X < _BorderWidth And e.Location.Y > TargetForm.Height - _BorderWidth Then
            resizeDirect = resizeDirectection.BottomLeft
        ElseIf e.Location.X > TargetForm.Width - _BorderWidth And e.Location.Y > TargetForm.Height - _BorderWidth Then
            resizeDirect = resizeDirectection.BottomRight
        ElseIf e.Location.X > TargetForm.Width - _BorderWidth And e.Location.Y < _BorderWidth Then
            resizeDirect = resizeDirectection.TopRight
        ElseIf e.Location.X < _BorderWidth Then
            resizeDirect = resizeDirectection.Left
        ElseIf e.Location.X > TargetForm.Width - _BorderWidth Then
            resizeDirect = resizeDirectection.Right
        ElseIf e.Location.Y < _BorderWidth Then
            resizeDirect = resizeDirectection.Top
        ElseIf e.Location.Y > TargetForm.Height - _BorderWidth Then
            resizeDirect = resizeDirectection.Bottom
        Else resizeDirect = resizeDirectection.None
        End If
    End Sub
End Class


Ce code permet de resizer une form dont la bordure est en none.
A voir également:

4 réponses

Utilisateur anonyme
30 août 2020 à 15:59
Il me semble que te l'as déjà dit, mais bon.

Prendre des codes "au hasard" sur internet tout en ayant fait l'impasse sur l'apprentissage des bases (toutes tes questions montrent qu'il te manque des bases) n'est pas la bonne méthode pour avancer.
On se croit meilleur que les autres, on n'a pas besoin d'apprendre des trucs simples qui coulent de source, etc...
J'ai fait pareil, j'ai bidouillé pendant un an. J'ai fini par ravaler ma fierté, j'ai acheté un livre, j'ai du le lire en 4 ou 5 jours. Après j'ai pris mon projet, je l'ai mis à la poubelle et l'ai refait en moins d'un moi.
Au final, j'ai perdu un an.

Le code que tu as trouvé est limpide sur son utilisation.
Je ne l'avais pas lu avant ma première réponse et là je l'ai juste survolé jusqu'au constructeur.
Suite à ça, je l'ai copié collé dans mon projet de test, ajouté une ligne au constructeur de mon formulaire et ça marche.

La différence entre mon approche et la tienne c'est que j'ai les bases pour savoir ce qu'est un constructeur, à quoi ça sert dans un objet, et comment s'en servir.
Et aussi, voir quels types de paramètres il faut lui donner.

Le meilleur conseil que je puisse te donner c'est de laisser ton projet de coté quelques jours et de suivre un cours en ligne

Celui de Plasserre est très bien https://plasserre.developpez.com/cours/vb-net/ il s'adresse principalement au codeur qui vient de VB6 ou VBA (et dans ton historique, il y a des questions sur VBA), mais prend l'objet pour un effet de mode alors que c'est l'essence de .Net

Celui d'openclassroom est un peu moins accessible mais il met l'objet au coeur de l'apprentissage
2
Utilisateur anonyme
30 août 2020 à 13:00
Bonjour

en général quand un code est posté sur le net, il est aussi décrit comment s'en servir
0
PouleFauna Messages postés 107 Date d'inscription lundi 18 mai 2020 Statut Membre Dernière intervention 29 mai 2022
30 août 2020 à 13:17
Je sais, mais je l'avait trouvé il y a quelque mois dans un forum et le post à été cloturé
0
PouleFauna Messages postés 107 Date d'inscription lundi 18 mai 2020 Statut Membre Dernière intervention 29 mai 2022
31 août 2020 à 12:39
On peut me répondre ???
0
Utilisateur anonyme
31 août 2020 à 13:05
Oui, dans quelques jours, après que tu aies pris le temps d’apprendre les bases qui te manquent
0