Wie eine Kontrolle der Größe veränderbar durch den Benutzer zur Laufzeit [.NET WinForms] machen?

StackOverflow https://stackoverflow.com/questions/1805686

  •  05-07-2019
  •  | 
  •  

Frage

Es ist in WinForms.

Ich habe eine Usercontrol, die oben, unten und links verankert ist. Ich möchte dem Benutzer erlauben, seine rechten Rand irgendwie zu ziehen und horizontal skalieren.

Die Steuerung wird direkt in die Form gelegt, keine Platte oder groupbox einen „Splitter“ zu setzen.

Jede Idee, wie eine Kontrolle der Größe veränderbar zur Laufzeit durch den Benutzer machen?

War es hilfreich?

Lösung

Private Declare Function GetWindowLongA Lib "User32" (ByVal hWnd As Integer, ByVal nIndex As Integer) As Long
Private Declare Function SetWindowLongA Lib "User32" (ByVal hWnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal CX As Integer, ByVal CY As Integer, ByVal wFlags As Integer)
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H4
Const SWP_NOMOVE = &H2
Const SWP_DRAWFRAME = &H20
Const GWL_STYLE = (-16)
Const WS_THICKFRAME = &H40000

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ResizeControl(TextBox1, Me)
End Sub

Sub ResizeControl(ByVal ControlName As Control, ByVal FormName As Form)
    Dim NewStyle As Long
    NewStyle = GetWindowLongA(ControlName.Handle, GWL_STYLE)
    NewStyle = NewStyle Or WS_THICKFRAME
    NewStyle = SetWindowLongA(ControlName.Handle, GWL_STYLE, NewStyle)
    SetWindowPos(ControlName.Handle, FormName.Handle, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME)
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top