Savoir comment fonctionne un code.
PouleFauna
Messages postés
138
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
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 :
Ce code permet de resizer une form dont la bordure est en none.
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:
- Savoir comment fonctionne un code.
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment créer un qr code - Guide
4 réponses
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
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